diff options
Diffstat (limited to 'lib')
133 files changed, 2050 insertions, 1262 deletions
diff --git a/lib/base.php b/lib/base.php index 107ae059bb1..da4b3a47c75 100644 --- a/lib/base.php +++ b/lib/base.php @@ -80,6 +80,10 @@ class OC { */ public static $server = null; + /** + * @throws \RuntimeException when the 3rdparty directory is missing or + * the app path list is empty or contains an invalid path + */ public static function initPaths() { // calculate the root directories OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4)); @@ -155,10 +159,9 @@ class OC { } } if (empty(OC::$THIRDPARTYROOT) || !file_exists(OC::$THIRDPARTYROOT)) { - echo('3rdparty directory not found! Please put the ownCloud 3rdparty' + throw new \RuntimeException('3rdparty directory not found! Please put the ownCloud 3rdparty' . ' folder in the ownCloud folder or the folder above.' . ' You can also configure the location in the config.php file.'); - return; } // search the apps folder @@ -182,12 +185,17 @@ class OC { } if (empty(OC::$APPSROOTS)) { - throw new Exception('apps directory not found! Please put the ownCloud apps folder in the ownCloud folder' + throw new \RuntimeException('apps directory not found! Please put the ownCloud apps folder in the ownCloud folder' . ' or the folder above. You can also configure the location in the config.php file.'); } $paths = array(); foreach (OC::$APPSROOTS as $path) { $paths[] = $path['path']; + if (!is_dir($path['path'])) { + throw new \RuntimeException(sprintf('App directory "%s" not found! Please put the ownCloud apps folder in the' + . ' ownCloud folder or the folder above. You can also configure the location in the' + . ' config.php file.', $path['path'])); + } } // set the right include path @@ -407,6 +415,7 @@ class OC { } // if session cant be started break with http 500 error } catch (Exception $e) { + \OCP\Util::logException('base', $e); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($e); @@ -465,17 +474,20 @@ class OC { self::$CLI = (php_sapi_name() == 'cli'); - self::initPaths(); - - // setup 3rdparty autoloader - $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; - if (file_exists($vendorAutoLoad)) { + try { + self::initPaths(); + // setup 3rdparty autoloader + $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; + if (!file_exists($vendorAutoLoad)) { + throw new \RuntimeException('Composer autoloader not found, unable to continue. Check the folder "3rdparty".'); + } require_once $vendorAutoLoad; - } else { + + } catch (\RuntimeException $e) { OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); // we can't use the template error page here, because this needs the // DI container which isn't available yet - print('Composer autoloader not found, unable to continue. Check the folder "3rdparty".'); + print($e->getMessage()); exit(); } diff --git a/lib/l10n/bg_BG.js b/lib/l10n/bg_BG.js index dc471f61f38..76b360b073b 100644 --- a/lib/l10n/bg_BG.js +++ b/lib/l10n/bg_BG.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","преди %n часа"], "_%n minute ago_::_%n minutes ago_" : ["","преди %n минути"], "seconds ago" : "преди секунди", - "Database Error" : "Грешка в базата данни", - "Please contact your system administrator." : "Моля, свържи се с админстратора.", "web services under your control" : "уеб услуги под твой контрол", "App directory already exists" : "Папката на приложението вече съществува.", "Can't create app folder. Please fix permissions. %s" : "Неуспешно създаване на папката за приложението. Моля, оправете разрешенията. %s", @@ -73,7 +71,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не се подържа и %s няма да работи правилно на тази платформа. Използвайте го на свой собствен риск!", "For the best results, please consider using a GNU/Linux server instead." : "За най-добри резултати, моля, помисли дали не бихте желали да използваште GNU/Linux сървър.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Моля, премахтене настройката за open_basedir от вашия php.ini или преминете към 64-битово PHP.", - "Please install the cURL extension and restart your webserver." : "Моля, инсталирайте разширението cURL и рестартирайте вашия уеб сървър.", "Set an admin username." : "Задай потребителско име за администратор.", "Set an admin password." : "Задай парола за администратор.", "Can't create or write into the data directory %s" : "Неуспешно създаване или записване в \"data\" папката %s", diff --git a/lib/l10n/bg_BG.json b/lib/l10n/bg_BG.json index 10e522dc835..10630dfce6a 100644 --- a/lib/l10n/bg_BG.json +++ b/lib/l10n/bg_BG.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["","преди %n часа"], "_%n minute ago_::_%n minutes ago_" : ["","преди %n минути"], "seconds ago" : "преди секунди", - "Database Error" : "Грешка в базата данни", - "Please contact your system administrator." : "Моля, свържи се с админстратора.", "web services under your control" : "уеб услуги под твой контрол", "App directory already exists" : "Папката на приложението вече съществува.", "Can't create app folder. Please fix permissions. %s" : "Неуспешно създаване на папката за приложението. Моля, оправете разрешенията. %s", @@ -71,7 +69,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не се подържа и %s няма да работи правилно на тази платформа. Използвайте го на свой собствен риск!", "For the best results, please consider using a GNU/Linux server instead." : "За най-добри резултати, моля, помисли дали не бихте желали да използваште GNU/Linux сървър.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Моля, премахтене настройката за open_basedir от вашия php.ini или преминете към 64-битово PHP.", - "Please install the cURL extension and restart your webserver." : "Моля, инсталирайте разширението cURL и рестартирайте вашия уеб сървър.", "Set an admin username." : "Задай потребителско име за администратор.", "Set an admin password." : "Задай парола за администратор.", "Can't create or write into the data directory %s" : "Неуспешно създаване или записване в \"data\" папката %s", diff --git a/lib/l10n/bs.js b/lib/l10n/bs.js index a6178ce6eb5..df14daeb935 100644 --- a/lib/l10n/bs.js +++ b/lib/l10n/bs.js @@ -16,7 +16,6 @@ OC.L10N.register( "Authentication error" : "Grešna autentifikacije", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba. Korištenje na vlastiti rizik!", "For the best results, please consider using a GNU/Linux server instead." : "Umjesto toga, za najbolje rezultate, molimo razmislite o mogućnosti korištenje GNU/Linux servera.", - "Please install the cURL extension and restart your webserver." : "Molim instalirajte cURL proširenje i ponovo pokrenite svoj server.", "A valid username must be provided" : "Nužno je navesti valjano korisničko ime", "A valid password must be provided" : "Nužno je navesti valjanu lozinku", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je očigledno postavljen da se skine inline doc blokova. To će nekoliko osnovnih aplikacija učiniti nedostupnim.", diff --git a/lib/l10n/bs.json b/lib/l10n/bs.json index 4e192401f91..fd003f6fd1c 100644 --- a/lib/l10n/bs.json +++ b/lib/l10n/bs.json @@ -14,7 +14,6 @@ "Authentication error" : "Grešna autentifikacije", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba. Korištenje na vlastiti rizik!", "For the best results, please consider using a GNU/Linux server instead." : "Umjesto toga, za najbolje rezultate, molimo razmislite o mogućnosti korištenje GNU/Linux servera.", - "Please install the cURL extension and restart your webserver." : "Molim instalirajte cURL proširenje i ponovo pokrenite svoj server.", "A valid username must be provided" : "Nužno je navesti valjano korisničko ime", "A valid password must be provided" : "Nužno je navesti valjanu lozinku", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je očigledno postavljen da se skine inline doc blokova. To će nekoliko osnovnih aplikacija učiniti nedostupnim.", diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js index b9f78a45209..95ca9b9e121 100644 --- a/lib/l10n/cs_CZ.js +++ b/lib/l10n/cs_CZ.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"], "seconds ago" : "před pár sekundami", - "Database Error" : "Chyba databáze", - "Please contact your system administrator." : "Kontaktujte prosím svého správce systému.", "web services under your control" : "webové služby pod Vaší kontrolou", "Empty filename is not allowed" : "Prázdné jméno souboru není povoleno", "Dot files are not allowed" : "Jména souborů začínající tečkou nejsou povolena", "4-byte characters are not supported in file names" : "4-bytové znaky nejsou podporovány ve jménech souborů", "File name is a reserved word" : "Jméno souboru je rezervované slovo", "File name contains at least one invalid character" : "Jméno souboru obsahuje nejméně jeden neplatný znak", + "File name is too long" : "Jméno souboru je moc dlouhé", "App directory already exists" : "Adresář aplikace již existuje", "Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s", "No source specified when installing app" : "Nebyl zadán zdroj při instalaci aplikace", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Vypadá to, že tato %s instance běží v 32-bitovém PHP prostředí a byl nakonfigurován open_basedir v php.ini. Toto povede k problémům se soubory většími než 4 GB a není doporučováno.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte prosím open_basedir nastavení ve svém php.ini nebo přejděte na 64-bitové PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Vypadá to, že tato %s instance běží ve 32-bitovém PHP prostředí a není nainstalováno cURL. Toto povede k problémům se soubory většími než 4 GB a zásadně není doporučováno.", - "Please install the cURL extension and restart your webserver." : "Nainstalujte prosím cURL rozšíření a restartujte webový server.", "Set an admin username." : "Zadejte uživatelské jméno správce.", "Set an admin password." : "Zadejte heslo správce.", "Can't create or write into the data directory %s" : "Nelze vytvořit nebo zapisovat do datového adresáře %s", @@ -104,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Nastavení práv pro %s selhalo, protože položka nebyla nalezena", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nelze nastavit datum vypršení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění", "Cannot set expiration date. Expiration date is in the past" : "Nelze nastavit datum vypršení platnosti. Datum vypršení je v minulosti", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Nelze smazat datum vypršení platnosti. Sdílená data vyžadují datum vypršení platnosti odkazu.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend", "Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno", "Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno", diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json index ab828ffe76e..1c7650dbfa6 100644 --- a/lib/l10n/cs_CZ.json +++ b/lib/l10n/cs_CZ.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"], "seconds ago" : "před pár sekundami", - "Database Error" : "Chyba databáze", - "Please contact your system administrator." : "Kontaktujte prosím svého správce systému.", "web services under your control" : "webové služby pod Vaší kontrolou", "Empty filename is not allowed" : "Prázdné jméno souboru není povoleno", "Dot files are not allowed" : "Jména souborů začínající tečkou nejsou povolena", "4-byte characters are not supported in file names" : "4-bytové znaky nejsou podporovány ve jménech souborů", "File name is a reserved word" : "Jméno souboru je rezervované slovo", "File name contains at least one invalid character" : "Jméno souboru obsahuje nejméně jeden neplatný znak", + "File name is too long" : "Jméno souboru je moc dlouhé", "App directory already exists" : "Adresář aplikace již existuje", "Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s", "No source specified when installing app" : "Nebyl zadán zdroj při instalaci aplikace", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Vypadá to, že tato %s instance běží v 32-bitovém PHP prostředí a byl nakonfigurován open_basedir v php.ini. Toto povede k problémům se soubory většími než 4 GB a není doporučováno.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte prosím open_basedir nastavení ve svém php.ini nebo přejděte na 64-bitové PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Vypadá to, že tato %s instance běží ve 32-bitovém PHP prostředí a není nainstalováno cURL. Toto povede k problémům se soubory většími než 4 GB a zásadně není doporučováno.", - "Please install the cURL extension and restart your webserver." : "Nainstalujte prosím cURL rozšíření a restartujte webový server.", "Set an admin username." : "Zadejte uživatelské jméno správce.", "Set an admin password." : "Zadejte heslo správce.", "Can't create or write into the data directory %s" : "Nelze vytvořit nebo zapisovat do datového adresáře %s", @@ -102,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Nastavení práv pro %s selhalo, protože položka nebyla nalezena", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nelze nastavit datum vypršení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění", "Cannot set expiration date. Expiration date is in the past" : "Nelze nastavit datum vypršení platnosti. Datum vypršení je v minulosti", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Nelze smazat datum vypršení platnosti. Sdílená data vyžadují datum vypršení platnosti odkazu.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend", "Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno", "Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno", diff --git a/lib/l10n/da.js b/lib/l10n/da.js index 8289558cdc1..17e67fdeb76 100644 --- a/lib/l10n/da.js +++ b/lib/l10n/da.js @@ -37,13 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n time siden","%n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["%n minut siden","%n minutter siden"], "seconds ago" : "sekunder siden", - "Database Error" : "Databasefejl", - "Please contact your system administrator." : "Kontakt venligst din systemadministrator.", "web services under your control" : "Webtjenester under din kontrol", "Empty filename is not allowed" : "Tomme filnavne er ikke tilladt", "Dot files are not allowed" : "Filer med punktummer er ikke tilladt", "4-byte characters are not supported in file names" : "Tegn med 4-byte understøttes ikke i filnavne", "File name is a reserved word" : "Filnavnet er et reserveret ord", + "File name contains at least one invalid character" : "Filnavnet indeholder mindst ét ugyldigt tegn", + "File name is too long" : "Filnavnet er for langt", "App directory already exists" : "App-mappe findes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke oprette app-mappe. Ret tilladelser. %s", "No source specified when installing app" : "Ingen kilde angivet under installation af app", @@ -80,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "For de bedste resultater, overvej venligst at bruge en GNU/Linux-server i stedet.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ud til, at denne %s-instans kører på et 32-bit PHP-miljø, samt at open_basedir er blevet konfigureret gennem php.ini. Dette vil føre til problemer med filer som er større end 4GB, og frarådes kraftigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Fjern venligst indstillingen for open_basedir inde i din php.ini eller skift til 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ud til, at denne %s-instans kører på et 32-bit PHP-miljø, samt at cURL ikke er installeret. Dette vil føre til problemer med filer som er større end 4GB, og frarådes kraftigt.", - "Please install the cURL extension and restart your webserver." : "Installér venligst cURL-udvidelsen og genstart din webserver.", "Set an admin username." : "Angiv et admin brugernavn.", "Set an admin password." : "Angiv et admin kodeord.", "Can't create or write into the data directory %s" : "Kan ikke oprette eller skrive ind i datamappen %s", @@ -103,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Angivelse af tilladelser for %s mislykkedes, fordi artiklen ikke blev fundet", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt", "Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Kan ikke rydde udløbsdatoen. Det er et krav til delinger, at de har en udløbsdato.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delingsbackend'en %s skal implementere grænsefladen OCP\\Share_Backend", "Sharing backend %s not found" : "Delingsbackend'en %s blev ikke fundet", "Sharing backend for %s not found" : "Delingsbackend'en for %s blev ikke fundet", diff --git a/lib/l10n/da.json b/lib/l10n/da.json index 8d5b77cb60f..c7b0bb9296d 100644 --- a/lib/l10n/da.json +++ b/lib/l10n/da.json @@ -35,13 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n time siden","%n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["%n minut siden","%n minutter siden"], "seconds ago" : "sekunder siden", - "Database Error" : "Databasefejl", - "Please contact your system administrator." : "Kontakt venligst din systemadministrator.", "web services under your control" : "Webtjenester under din kontrol", "Empty filename is not allowed" : "Tomme filnavne er ikke tilladt", "Dot files are not allowed" : "Filer med punktummer er ikke tilladt", "4-byte characters are not supported in file names" : "Tegn med 4-byte understøttes ikke i filnavne", "File name is a reserved word" : "Filnavnet er et reserveret ord", + "File name contains at least one invalid character" : "Filnavnet indeholder mindst ét ugyldigt tegn", + "File name is too long" : "Filnavnet er for langt", "App directory already exists" : "App-mappe findes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke oprette app-mappe. Ret tilladelser. %s", "No source specified when installing app" : "Ingen kilde angivet under installation af app", @@ -78,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "For de bedste resultater, overvej venligst at bruge en GNU/Linux-server i stedet.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ud til, at denne %s-instans kører på et 32-bit PHP-miljø, samt at open_basedir er blevet konfigureret gennem php.ini. Dette vil føre til problemer med filer som er større end 4GB, og frarådes kraftigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Fjern venligst indstillingen for open_basedir inde i din php.ini eller skift til 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ud til, at denne %s-instans kører på et 32-bit PHP-miljø, samt at cURL ikke er installeret. Dette vil føre til problemer med filer som er større end 4GB, og frarådes kraftigt.", - "Please install the cURL extension and restart your webserver." : "Installér venligst cURL-udvidelsen og genstart din webserver.", "Set an admin username." : "Angiv et admin brugernavn.", "Set an admin password." : "Angiv et admin kodeord.", "Can't create or write into the data directory %s" : "Kan ikke oprette eller skrive ind i datamappen %s", @@ -101,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Angivelse af tilladelser for %s mislykkedes, fordi artiklen ikke blev fundet", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt", "Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Kan ikke rydde udløbsdatoen. Det er et krav til delinger, at de har en udløbsdato.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delingsbackend'en %s skal implementere grænsefladen OCP\\Share_Backend", "Sharing backend %s not found" : "Delingsbackend'en %s blev ikke fundet", "Sharing backend for %s not found" : "Delingsbackend'en for %s blev ikke fundet", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 50471723ba5..fc71d1fb6d5 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", - "Database Error" : "Datenbankfehler", - "Please contact your system administrator." : "Bitte kontaktiere Deinen Systemadministrator.", "web services under your control" : "Web-Dienste unter Deiner Kontrolle", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "4-byte characters are not supported in file names" : "4-Byte Zeichen sind in Dateinamen nicht erlaubt", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", + "File name is too long" : "Dateiname ist zu lang", "App directory already exists" : "Das Applikationsverzeichnis existiert bereits", "Can't create app folder. Please fix permissions. %s" : "Es kann kein Applikationsordner erstellt werden. Bitte passe die Berechtigungen an. %s", "No source specified when installing app" : "Für die Installation der Applikation wurde keine Quelle angegeben", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entferne die open_basedir-Einstellung in Deiner php.ini oder wechsele zu 64-Bit-PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und cURL nicht installiert ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", - "Please install the cURL extension and restart your webserver." : "Bitte installiere die cURL-Erweiterung und starte Deinen Webserver neu.", "Set an admin username." : "Einen Administrator-Benutzernamen setzen.", "Set an admin password." : "Ein Administrator-Passwort setzen.", "Can't create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index a121ab46401..f10d3578fb3 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", - "Database Error" : "Datenbankfehler", - "Please contact your system administrator." : "Bitte kontaktiere Deinen Systemadministrator.", "web services under your control" : "Web-Dienste unter Deiner Kontrolle", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "4-byte characters are not supported in file names" : "4-Byte Zeichen sind in Dateinamen nicht erlaubt", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", + "File name is too long" : "Dateiname ist zu lang", "App directory already exists" : "Das Applikationsverzeichnis existiert bereits", "Can't create app folder. Please fix permissions. %s" : "Es kann kein Applikationsordner erstellt werden. Bitte passe die Berechtigungen an. %s", "No source specified when installing app" : "Für die Installation der Applikation wurde keine Quelle angegeben", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entferne die open_basedir-Einstellung in Deiner php.ini oder wechsele zu 64-Bit-PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und cURL nicht installiert ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", - "Please install the cURL extension and restart your webserver." : "Bitte installiere die cURL-Erweiterung und starte Deinen Webserver neu.", "Set an admin username." : "Einen Administrator-Benutzernamen setzen.", "Set an admin password." : "Ein Administrator-Passwort setzen.", "Can't create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 687c4c07c22..823fde2d789 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", - "Database Error" : "Datenbankfehler", - "Please contact your system administrator." : "Bitte kontaktieren Sie Ihren Systemadministrator.", "web services under your control" : "Web-Dienste unter Ihrer Kontrolle", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "4-byte characters are not supported in file names" : "4-Byte-Zeichen werden in Dateinamen nicht unterstützt", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", + "File name is too long" : "Dateiname ist zu lang", "App directory already exists" : "Der Ordner für die App ist bereits vorhanden.", "Can't create app folder. Please fix permissions. %s" : "Der Ordner für die App konnte nicht angelegt werden. Bitte überprüfen Sie die Ordner- und Dateirechte und passen Sie diese entsprechend an. %s", "No source specified when installing app" : "Für die Installation der Applikation wurde keine Quelle angegeben", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entfernen Sie die open_basedir-Einstellung in Ihrer php.ini oder wechseln Sie zu 64-Bit-PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und cURL nicht installiert ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", - "Please install the cURL extension and restart your webserver." : "Bitte installieren Sie die cURL-Erweiterung und starten Sie Ihren Webserver neu.", "Set an admin username." : "Einen Administrator-Benutzernamen setzen.", "Set an admin password." : "Setze Administrator Passwort", "Can't create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index f1e0f2bac1f..42b6d72303e 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", - "Database Error" : "Datenbankfehler", - "Please contact your system administrator." : "Bitte kontaktieren Sie Ihren Systemadministrator.", "web services under your control" : "Web-Dienste unter Ihrer Kontrolle", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "4-byte characters are not supported in file names" : "4-Byte-Zeichen werden in Dateinamen nicht unterstützt", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", + "File name is too long" : "Dateiname ist zu lang", "App directory already exists" : "Der Ordner für die App ist bereits vorhanden.", "Can't create app folder. Please fix permissions. %s" : "Der Ordner für die App konnte nicht angelegt werden. Bitte überprüfen Sie die Ordner- und Dateirechte und passen Sie diese entsprechend an. %s", "No source specified when installing app" : "Für die Installation der Applikation wurde keine Quelle angegeben", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Zur Gewährleistung eines optimalen Betriebs sollte stattdessen ein GNU/Linux-Server verwendet werden.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und open_basedir in der Datei php.ini konfiguriert worden ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Bitte entfernen Sie die open_basedir-Einstellung in Ihrer php.ini oder wechseln Sie zu 64-Bit-PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Es scheint, dass diese %s-Instanz unter einer 32-Bit-PHP-Umgebung läuft und cURL nicht installiert ist. Von einem solchen Betrieb wird dringend abgeraten, weil es dabei zu Problemen mit Dateien kommt, deren Größe 4 GB übersteigt.", - "Please install the cURL extension and restart your webserver." : "Bitte installieren Sie die cURL-Erweiterung und starten Sie Ihren Webserver neu.", "Set an admin username." : "Einen Administrator-Benutzernamen setzen.", "Set an admin password." : "Setze Administrator Passwort", "Can't create or write into the data directory %s" : "Das Datenverzeichnis %s kann nicht erstellt oder es kann darin nicht geschrieben werden.", diff --git a/lib/l10n/el.js b/lib/l10n/el.js index fd56b05bc07..ff7a38d94a9 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -10,6 +10,8 @@ OC.L10N.register( "PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.", "The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.", "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s", + "ownCloud %s or higher is required." : "Απαιτείται ownCloud %s ή νεότερο", + "ownCloud with a version lower than %s is required." : "Απαιτείται έκδοση ownCloud παλαιότερη από την %s.", "Help" : "Βοήθεια", "Personal" : "Προσωπικά", "Users" : "Χρήστες", @@ -28,9 +30,8 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","%n ώρες πριν"], "_%n minute ago_::_%n minutes ago_" : ["","%n λεπτά πριν"], "seconds ago" : "δευτερόλεπτα πριν", - "Database Error" : "Σφάλμα βάσης δεδομένων", - "Please contact your system administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή συστήματος.", "web services under your control" : "υπηρεσίες δικτύου υπό τον έλεγχό σας", + "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου", "App directory already exists" : "Ο κατάλογος εφαρμογών υπάρχει ήδη", "Can't create app folder. Please fix permissions. %s" : "Δεν είναι δυνατόν να δημιουργηθεί ο φάκελος εφαρμογής. Παρακαλώ διορθώστε τις άδειες πρόσβασης. %s", "No source specified when installing app" : "Δεν προσδιορίστηκε πηγή κατά την εγκατάσταση της εφαρμογής", @@ -65,11 +66,13 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!", "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Παρακαλώ εγκαταστήστε το πρόσθετο cURL και επανεκκινήστε τον διακομιστή σας.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Φαίνεται ότι η εγκατάσταση %s εκτελείται σε περιβάλλον 32-bit PHP και η επιλογη open_basedir έχει ρυθμιστεί στο αρχείο php.ini. Αυτό θα οδηγήσει σε προβλήματα με αρχεία πάνω από 4 GB και δεν συνίσταται.", + "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Παρακαλώ αφαιρέστε την ρύθμιση open_basedir μέσα στο αρχείο php.ini ή αλλάξτε σε 64-bit PHP.", "Set an admin username." : "Εισάγετε όνομα χρήστη διαχειριστή.", "Set an admin password." : "Εισάγετε συνθηματικό διαχειριστή.", "Can't create or write into the data directory %s" : "Αδύνατη η δημιουργία ή συγγραφή στον κατάλογο δεδομένων %s", "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i", "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει", "You are not allowed to share %s" : "Δεν επιτρέπεται να διαμοιράσετε τον πόρο %s", "Sharing %s failed, because the user %s is the item owner" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s είναι ο ιδιοκτήτης του αντικειμένου", @@ -80,6 +83,7 @@ OC.L10N.register( "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" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται", "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s", "Setting permissions for %s failed, because the item was not found" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί το αντικείμενο δεν βρέθηκε", @@ -109,6 +113,7 @@ OC.L10N.register( "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.", "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.", "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ", + "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".", "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να ενημερώσει τον PHP στη νεώτερη έκδοση. Η έκδοση του PHP σας δεν υποστηρίζεται πλεον από το ownCloud και την κοινότητα PHP.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Ο PHP φαίνεται να είναι ρυθμισμένος ώστε να αφαιρεί μπλοκ εσωτερικών κειμένων (inline doc). Αυτό θα καταστήσει κύριες εφαρμογές μη-διαθέσιμες.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", diff --git a/lib/l10n/el.json b/lib/l10n/el.json index e45df2f8b73..e1d19d812ab 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -8,6 +8,8 @@ "PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.", "The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.", "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s", + "ownCloud %s or higher is required." : "Απαιτείται ownCloud %s ή νεότερο", + "ownCloud with a version lower than %s is required." : "Απαιτείται έκδοση ownCloud παλαιότερη από την %s.", "Help" : "Βοήθεια", "Personal" : "Προσωπικά", "Users" : "Χρήστες", @@ -26,9 +28,8 @@ "_%n hour ago_::_%n hours ago_" : ["","%n ώρες πριν"], "_%n minute ago_::_%n minutes ago_" : ["","%n λεπτά πριν"], "seconds ago" : "δευτερόλεπτα πριν", - "Database Error" : "Σφάλμα βάσης δεδομένων", - "Please contact your system administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή συστήματος.", "web services under your control" : "υπηρεσίες δικτύου υπό τον έλεγχό σας", + "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου", "App directory already exists" : "Ο κατάλογος εφαρμογών υπάρχει ήδη", "Can't create app folder. Please fix permissions. %s" : "Δεν είναι δυνατόν να δημιουργηθεί ο φάκελος εφαρμογής. Παρακαλώ διορθώστε τις άδειες πρόσβασης. %s", "No source specified when installing app" : "Δεν προσδιορίστηκε πηγή κατά την εγκατάσταση της εφαρμογής", @@ -63,11 +64,13 @@ "PostgreSQL username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!", "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Παρακαλώ εγκαταστήστε το πρόσθετο cURL και επανεκκινήστε τον διακομιστή σας.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Φαίνεται ότι η εγκατάσταση %s εκτελείται σε περιβάλλον 32-bit PHP και η επιλογη open_basedir έχει ρυθμιστεί στο αρχείο php.ini. Αυτό θα οδηγήσει σε προβλήματα με αρχεία πάνω από 4 GB και δεν συνίσταται.", + "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Παρακαλώ αφαιρέστε την ρύθμιση open_basedir μέσα στο αρχείο php.ini ή αλλάξτε σε 64-bit PHP.", "Set an admin username." : "Εισάγετε όνομα χρήστη διαχειριστή.", "Set an admin password." : "Εισάγετε συνθηματικό διαχειριστή.", "Can't create or write into the data directory %s" : "Αδύνατη η δημιουργία ή συγγραφή στον κατάλογο δεδομένων %s", "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i", "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει", "You are not allowed to share %s" : "Δεν επιτρέπεται να διαμοιράσετε τον πόρο %s", "Sharing %s failed, because the user %s is the item owner" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s είναι ο ιδιοκτήτης του αντικειμένου", @@ -78,6 +81,7 @@ "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" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται", "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.", "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s", "Setting permissions for %s failed, because the item was not found" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί το αντικείμενο δεν βρέθηκε", @@ -107,6 +111,7 @@ "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.", "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.", "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ", + "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".", "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να ενημερώσει τον PHP στη νεώτερη έκδοση. Η έκδοση του PHP σας δεν υποστηρίζεται πλεον από το ownCloud και την κοινότητα PHP.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Ο PHP φαίνεται να είναι ρυθμισμένος ώστε να αφαιρεί μπλοκ εσωτερικών κειμένων (inline doc). Αυτό θα καταστήσει κύριες εφαρμογές μη-διαθέσιμες.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index a584e6fd9a4..adb0a0524a3 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -37,8 +37,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n hour ago","%n hours ago"], "_%n minute ago_::_%n minutes ago_" : ["%n minute ago","%n minutes ago"], "seconds ago" : "seconds ago", - "Database Error" : "Database Error", - "Please contact your system administrator." : "Please contact your system administrator.", "web services under your control" : "web services under your control", "Empty filename is not allowed" : "Empty filename is not allowed", "Dot files are not allowed" : "Dot files are not allowed", @@ -80,8 +78,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "For the best results, please consider using a GNU/Linux server instead.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir setting has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged.", - "Please install the cURL extension and restart your webserver." : "Please install the cURL extension and restart your webserver.", "Set an admin username." : "Set an admin username.", "Set an admin password." : "Set an admin password.", "Can't create or write into the data directory %s" : "Can't create or write into the data directory %s", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 519ec513376..835188e88ef 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -35,8 +35,6 @@ "_%n hour ago_::_%n hours ago_" : ["%n hour ago","%n hours ago"], "_%n minute ago_::_%n minutes ago_" : ["%n minute ago","%n minutes ago"], "seconds ago" : "seconds ago", - "Database Error" : "Database Error", - "Please contact your system administrator." : "Please contact your system administrator.", "web services under your control" : "web services under your control", "Empty filename is not allowed" : "Empty filename is not allowed", "Dot files are not allowed" : "Dot files are not allowed", @@ -78,8 +76,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "For the best results, please consider using a GNU/Linux server instead.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir setting has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged.", - "Please install the cURL extension and restart your webserver." : "Please install the cURL extension and restart your webserver.", "Set an admin username." : "Set an admin username.", "Set an admin password." : "Set an admin password.", "Can't create or write into the data directory %s" : "Can't create or write into the data directory %s", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index dd59d13d88f..783cd8d6e3b 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -22,6 +22,8 @@ OC.L10N.register( "Users" : "Usuarios", "Admin" : "Administración", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "La App \"%s\" no puede ser instalada porque no es compatible con esta versión de ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La App \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s", "No app name specified" : "No se ha especificado nombre de la aplicación", "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen inválida", @@ -35,9 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"], "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"], "seconds ago" : "hace segundos", - "Database Error" : "Error en la base de datos", - "Please contact your system administrator." : "Por favor, contacte al administrador del sistema.", "web services under your control" : "Servicios web bajo su control", + "Empty filename is not allowed" : "No se puede dejar el nombre en blanco.", + "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "4-byte characters are not supported in file names" : " No están permitidos caractéres de 4-bytes", + "File name is a reserved word" : "El nombre de archivo es una palabra reservada", + "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un carácter inválido", + "File name is too long" : "El nombre del archivo es demasiado largo", "App directory already exists" : "El directorio de la aplicación ya existe", "Can't create app folder. Please fix permissions. %s" : "No se puede crear la carpeta de la aplicación. Corrija los permisos. %s", "No source specified when installing app" : "No se ha especificado origen cuando se ha instalado la aplicación", @@ -70,10 +76,10 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle no válidos", "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", "PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos", - "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela a su propio riesgo! ", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela bajo su propio riesgo! ", "For the best results, please consider using a GNU/Linux server instead." : "Para resultados óptimos, considere utilizar un servidor GNU/Linux.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con arhivos de tamaño superior a 4GB y resulta totalmente desaconsejado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, quite el ajuste de open_basedir —dentro de su php.ini— o pásese a PHP de 64 bits.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale la extensión cURL y reinicie el servidor web.", "Set an admin username." : "Configurar un nombre de usuario del administrador", "Set an admin password." : "Configurar la contraseña del administrador.", "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s", @@ -93,8 +99,9 @@ OC.L10N.register( "Share type %s is not valid for %s" : "Compartir tipo %s no es válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "La configuración de permisos para %s ha fallado, ya que los permisos superan los permisos dados a %s", "Setting permissions for %s failed, because the item was not found" : "La configuración de permisos para %s ha fallado, ya que no se encontró el elemento ", - "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar luego de %s de ser compartidos", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos", "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "No se puede eliminar la fecha de caducidad. Los archivos compartidos deben tener una fecha de caducidad.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend", "Sharing backend %s not found" : "El motor compartido %s no se ha encontrado", "Sharing backend for %s not found" : "Motor compartido para %s no encontrado", @@ -119,6 +126,7 @@ OC.L10N.register( "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.", "Please ask your server administrator to install the module." : "Consulte al administrador de su servidor para instalar el módulo.", "PHP module %s not installed." : "El módulo PHP %s no está instalado.", + "PHP setting \"%s\" is not set to \"%s\"." : "La opción PHP \"%s\" no es \"%s\".", "Adjusting this setting in php.ini will make ownCloud run again" : "Ajustando esta opción en php.ini permitirá que ownCloud vuelva a funcionar", "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Consulte a su administrador del servidor para actualizar PHP a la versión más reciente. Su versión de PHP ya no es apoyado por ownCloud y la comunidad PHP.", "PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code." : "PHP está configurado para transmitir datos raw. Desde la versión 5.6 de PHP se permitirá enviar noticias perfectamente validas.", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index 72053d08b2c..3b5f6ea2f39 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -20,6 +20,8 @@ "Users" : "Usuarios", "Admin" : "Administración", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "La App \"%s\" no puede ser instalada porque no es compatible con esta versión de ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La App \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s", "No app name specified" : "No se ha especificado nombre de la aplicación", "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen inválida", @@ -33,9 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"], "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"], "seconds ago" : "hace segundos", - "Database Error" : "Error en la base de datos", - "Please contact your system administrator." : "Por favor, contacte al administrador del sistema.", "web services under your control" : "Servicios web bajo su control", + "Empty filename is not allowed" : "No se puede dejar el nombre en blanco.", + "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "4-byte characters are not supported in file names" : " No están permitidos caractéres de 4-bytes", + "File name is a reserved word" : "El nombre de archivo es una palabra reservada", + "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un carácter inválido", + "File name is too long" : "El nombre del archivo es demasiado largo", "App directory already exists" : "El directorio de la aplicación ya existe", "Can't create app folder. Please fix permissions. %s" : "No se puede crear la carpeta de la aplicación. Corrija los permisos. %s", "No source specified when installing app" : "No se ha especificado origen cuando se ha instalado la aplicación", @@ -68,10 +74,10 @@ "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle no válidos", "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", "PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos", - "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela a su propio riesgo! ", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela bajo su propio riesgo! ", "For the best results, please consider using a GNU/Linux server instead." : "Para resultados óptimos, considere utilizar un servidor GNU/Linux.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con arhivos de tamaño superior a 4GB y resulta totalmente desaconsejado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, quite el ajuste de open_basedir —dentro de su php.ini— o pásese a PHP de 64 bits.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale la extensión cURL y reinicie el servidor web.", "Set an admin username." : "Configurar un nombre de usuario del administrador", "Set an admin password." : "Configurar la contraseña del administrador.", "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s", @@ -91,8 +97,9 @@ "Share type %s is not valid for %s" : "Compartir tipo %s no es válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "La configuración de permisos para %s ha fallado, ya que los permisos superan los permisos dados a %s", "Setting permissions for %s failed, because the item was not found" : "La configuración de permisos para %s ha fallado, ya que no se encontró el elemento ", - "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar luego de %s de ser compartidos", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos", "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "No se puede eliminar la fecha de caducidad. Los archivos compartidos deben tener una fecha de caducidad.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend", "Sharing backend %s not found" : "El motor compartido %s no se ha encontrado", "Sharing backend for %s not found" : "Motor compartido para %s no encontrado", @@ -117,6 +124,7 @@ "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.", "Please ask your server administrator to install the module." : "Consulte al administrador de su servidor para instalar el módulo.", "PHP module %s not installed." : "El módulo PHP %s no está instalado.", + "PHP setting \"%s\" is not set to \"%s\"." : "La opción PHP \"%s\" no es \"%s\".", "Adjusting this setting in php.ini will make ownCloud run again" : "Ajustando esta opción en php.ini permitirá que ownCloud vuelva a funcionar", "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Consulte a su administrador del servidor para actualizar PHP a la versión más reciente. Su versión de PHP ya no es apoyado por ownCloud y la comunidad PHP.", "PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code." : "PHP está configurado para transmitir datos raw. Desde la versión 5.6 de PHP se permitirá enviar noticias perfectamente validas.", diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js index 5c8d093388c..e1b5cdc67d0 100644 --- a/lib/l10n/eu.js +++ b/lib/l10n/eu.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["orain dela ordu %n","orain dela %n ordu"], "_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"], "seconds ago" : "segundu", - "Database Error" : "Datu basearen errorea", - "Please contact your system administrator." : "Mesedez jarri harremetan zure sistemaren kudeatzailearekin.", "web services under your control" : "web zerbitzuak zure kontrolpean", "App directory already exists" : "Aplikazioaren karpeta dagoeneko existitzen da", "Can't create app folder. Please fix permissions. %s" : "Ezin izan da aplikazioaren karpeta sortu. Mesdez konpondu baimenak. %s", @@ -73,7 +71,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.", "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez ezabatu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.", - "Please install the cURL extension and restart your webserver." : "Mesedez instalatu cURL extensioa eta berrabiarazi zure web zerbitzaria.", "Set an admin username." : "Ezarri administraziorako erabiltzaile izena.", "Set an admin password." : "Ezarri administraziorako pasahitza.", "Can't create or write into the data directory %s" : "Ezin da %s datu karpeta sortu edo bertan idatzi ", diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json index 1e8590526d8..229b673f73b 100644 --- a/lib/l10n/eu.json +++ b/lib/l10n/eu.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["orain dela ordu %n","orain dela %n ordu"], "_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"], "seconds ago" : "segundu", - "Database Error" : "Datu basearen errorea", - "Please contact your system administrator." : "Mesedez jarri harremetan zure sistemaren kudeatzailearekin.", "web services under your control" : "web zerbitzuak zure kontrolpean", "App directory already exists" : "Aplikazioaren karpeta dagoeneko existitzen da", "Can't create app folder. Please fix permissions. %s" : "Ezin izan da aplikazioaren karpeta sortu. Mesdez konpondu baimenak. %s", @@ -71,7 +69,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.", "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez ezabatu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.", - "Please install the cURL extension and restart your webserver." : "Mesedez instalatu cURL extensioa eta berrabiarazi zure web zerbitzaria.", "Set an admin username." : "Ezarri administraziorako erabiltzaile izena.", "Set an admin password." : "Ezarri administraziorako pasahitza.", "Can't create or write into the data directory %s" : "Ezin da %s datu karpeta sortu edo bertan idatzi ", diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js index fec330713a6..9f688ba8075 100644 --- a/lib/l10n/fi_FI.js +++ b/lib/l10n/fi_FI.js @@ -36,12 +36,11 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n tunti sitten","%n tuntia sitten"], "_%n minute ago_::_%n minutes ago_" : ["%n minuutti sitten","%n minuuttia sitten"], "seconds ago" : "sekuntia sitten", - "Database Error" : "Tietokantavirhe", - "Please contact your system administrator." : "Ole yhteydessä järjestelmän ylläpitäjään.", "web services under your control" : "verkkopalvelut hallinnassasi", "Empty filename is not allowed" : "Tiedostonimi ei voi olla tyhjä", "Dot files are not allowed" : "Pistetiedostot eivät ole sallittuja", "File name contains at least one invalid character" : "Tiedoston nimi sisältää ainakin yhden virheellisen merkin", + "File name is too long" : "Tiedoston nimi on liian pitkä", "App directory already exists" : "Sovelluskansio on jo olemassa", "Can't create app folder. Please fix permissions. %s" : "Sovelluskansion luominen ei onnistu. Korjaa käyttöoikeudet. %s", "No source specified when installing app" : "Lähdettä ei määritelty sovellusta asennettaessa", @@ -76,8 +75,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Käytä parhaan lopputuloksen saamiseksi GNU/Linux-palvelinta.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Vaikuttaa siltä, että tämä %s-instanssi toimii 32-bittisessä PHP-ympäristössä ja open_basedir-asetus on määritetty php.ini-tiedostossa. Tämä johtaa ongelmiin yli 4 gigatavun tiedostojen kanssa, eikä siksi ole suositeltavaa.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Poista open_basedir-asetus php.ini-tiedostosta tai vaihda 64-bittiseen PHP:hen.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Vaikuttaa siltä, että tämä %s-instanssi toimii 32-bittisessä PHP-ympäristössä ja cURL ei ole asennettuna. Tämä johtaa ongelmiin yli 4 gigatavun tiedostojen kanssa, eikä siksi ole suositeltavaa.", - "Please install the cURL extension and restart your webserver." : "Asenna cURL-laajennus ja käynnistä http-palvelin uudelleen.", "Set an admin username." : "Aseta ylläpitäjän käyttäjätunnus.", "Set an admin password." : "Aseta ylläpitäjän salasana.", "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json index fe5f6f8a07a..1ecab62af28 100644 --- a/lib/l10n/fi_FI.json +++ b/lib/l10n/fi_FI.json @@ -34,12 +34,11 @@ "_%n hour ago_::_%n hours ago_" : ["%n tunti sitten","%n tuntia sitten"], "_%n minute ago_::_%n minutes ago_" : ["%n minuutti sitten","%n minuuttia sitten"], "seconds ago" : "sekuntia sitten", - "Database Error" : "Tietokantavirhe", - "Please contact your system administrator." : "Ole yhteydessä järjestelmän ylläpitäjään.", "web services under your control" : "verkkopalvelut hallinnassasi", "Empty filename is not allowed" : "Tiedostonimi ei voi olla tyhjä", "Dot files are not allowed" : "Pistetiedostot eivät ole sallittuja", "File name contains at least one invalid character" : "Tiedoston nimi sisältää ainakin yhden virheellisen merkin", + "File name is too long" : "Tiedoston nimi on liian pitkä", "App directory already exists" : "Sovelluskansio on jo olemassa", "Can't create app folder. Please fix permissions. %s" : "Sovelluskansion luominen ei onnistu. Korjaa käyttöoikeudet. %s", "No source specified when installing app" : "Lähdettä ei määritelty sovellusta asennettaessa", @@ -74,8 +73,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Käytä parhaan lopputuloksen saamiseksi GNU/Linux-palvelinta.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Vaikuttaa siltä, että tämä %s-instanssi toimii 32-bittisessä PHP-ympäristössä ja open_basedir-asetus on määritetty php.ini-tiedostossa. Tämä johtaa ongelmiin yli 4 gigatavun tiedostojen kanssa, eikä siksi ole suositeltavaa.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Poista open_basedir-asetus php.ini-tiedostosta tai vaihda 64-bittiseen PHP:hen.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Vaikuttaa siltä, että tämä %s-instanssi toimii 32-bittisessä PHP-ympäristössä ja cURL ei ole asennettuna. Tämä johtaa ongelmiin yli 4 gigatavun tiedostojen kanssa, eikä siksi ole suositeltavaa.", - "Please install the cURL extension and restart your webserver." : "Asenna cURL-laajennus ja käynnistä http-palvelin uudelleen.", "Set an admin username." : "Aseta ylläpitäjän käyttäjätunnus.", "Set an admin password." : "Aseta ylläpitäjän salasana.", "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index f9228ee2a92..574f8e53998 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -37,9 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","Il y a %n heures"], "_%n minute ago_::_%n minutes ago_" : ["","il y a %n minutes"], "seconds ago" : "il y a quelques secondes", - "Database Error" : "Erreur dans la base de données", - "Please contact your system administrator." : "Veuillez contacter votre administrateur système.", "web services under your control" : "services web sous votre contrôle", + "Empty filename is not allowed" : "Le nom de fichier ne peut pas être vide", + "Dot files are not allowed" : "Le nom de fichier ne peut pas commencer par un point", + "4-byte characters are not supported in file names" : "Les caractères sur 4 octets ne sont pas pris en charge dans les noms de fichiers", + "File name is a reserved word" : "Ce nom de fichier est un mot réservé", + "File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)", + "File name is too long" : "Nom de fichier trop long", "App directory already exists" : "Le dossier de l'application existe déjà", "Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s", "No source specified when installing app" : "Aucune source spécifiée pour installer l'application", @@ -76,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bits et open_basedir a été configuré dans php.ini. Cela engendre des problèmes avec les fichiers supérieurs à 4Go et cela est donc fortement déconseillé.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez supprimer la configuration open_basedir de votre php.ini ou basculer sur une version PHP 64-bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bits et cURL n'est pas installé. Cela engendre des problèmes avec les fichiers supérieurs à 4Go et cela est donc fortement déconseillé.", - "Please install the cURL extension and restart your webserver." : "Veuillez installer l'extension cURL et redémarrer votre serveur web.", "Set an admin username." : "Spécifiez un nom d'utilisateur pour l'administrateur.", "Set an admin password." : "Spécifiez un mot de passe administrateur.", "Can't create or write into the data directory %s" : "Impossible de créer ou d'écrire dans le répertoire des données %s", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 45a5aacaf13..3107d0b3e69 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -35,9 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["","Il y a %n heures"], "_%n minute ago_::_%n minutes ago_" : ["","il y a %n minutes"], "seconds ago" : "il y a quelques secondes", - "Database Error" : "Erreur dans la base de données", - "Please contact your system administrator." : "Veuillez contacter votre administrateur système.", "web services under your control" : "services web sous votre contrôle", + "Empty filename is not allowed" : "Le nom de fichier ne peut pas être vide", + "Dot files are not allowed" : "Le nom de fichier ne peut pas commencer par un point", + "4-byte characters are not supported in file names" : "Les caractères sur 4 octets ne sont pas pris en charge dans les noms de fichiers", + "File name is a reserved word" : "Ce nom de fichier est un mot réservé", + "File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)", + "File name is too long" : "Nom de fichier trop long", "App directory already exists" : "Le dossier de l'application existe déjà", "Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s", "No source specified when installing app" : "Aucune source spécifiée pour installer l'application", @@ -74,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bits et open_basedir a été configuré dans php.ini. Cela engendre des problèmes avec les fichiers supérieurs à 4Go et cela est donc fortement déconseillé.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez supprimer la configuration open_basedir de votre php.ini ou basculer sur une version PHP 64-bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bits et cURL n'est pas installé. Cela engendre des problèmes avec les fichiers supérieurs à 4Go et cela est donc fortement déconseillé.", - "Please install the cURL extension and restart your webserver." : "Veuillez installer l'extension cURL et redémarrer votre serveur web.", "Set an admin username." : "Spécifiez un nom d'utilisateur pour l'administrateur.", "Set an admin password." : "Spécifiez un mot de passe administrateur.", "Can't create or write into the data directory %s" : "Impossible de créer ou d'écrire dans le répertoire des données %s", diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js index 58dcc7b5898..ee6b5f19687 100644 --- a/lib/l10n/gl.js +++ b/lib/l10n/gl.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["hai %n hora","hai %n horas"], "_%n minute ago_::_%n minutes ago_" : ["hai %n minuto","hai %n minutos"], "seconds ago" : "segundos atrás", - "Database Error" : "Produciuse un erro na base de datos", - "Please contact your system administrator." : "Contacte co administrador.", "web services under your control" : "servizos web baixo o seu control", "Empty filename is not allowed" : "Non está permitido deixar baleiro o nome de ficheiro", "Dot files are not allowed" : "Non se admiten os ficheiros con punto", "4-byte characters are not supported in file names" : "Non se admiten os caracteres de 4 bytes nos nomes de ficheiro", "File name is a reserved word" : "O nome de ficheiro é unha palabra reservada", "File name contains at least one invalid character" : "O nome de ficheiro contén algún carácter incorrecto", + "File name is too long" : "O nome de ficheiro é longo de máis", "App directory already exists" : "Xa existe o directorio da aplicación", "Can't create app folder. Please fix permissions. %s" : "Non é posíbel crear o cartafol de aplicacións. Corrixa os permisos. %s", "No source specified when installing app" : "Non foi especificada ningunha orixe ao instalar a aplicación", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Para obter mellores resultados, considere o emprego dun servidor GNU/Linux no seu canto.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Semella que esta instancia de %s está a funcionar nun entorno PHP de 32 bisst e o open_basedir foi configurado no php.ini. Isto provocará problemas con ficheiros maiores de 4 GB e está absolutamente desaconsellado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Retire o axuste de open_basedir no php.ini ou cambie a PHP de 64 bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Semella que esta instancia %s está a funcionar nun entorno PHP de 32 bits e cURL non está instalado. Isto provocará problemas con ficheiros maiores de 4 GB e está absolutamente desaconsellado.", - "Please install the cURL extension and restart your webserver." : "Instale a extensión cURL e reinicie o servidor web.", "Set an admin username." : "Estabeleza un nome de usuario administrador", "Set an admin password." : "Estabeleza un contrasinal de administrador", "Can't create or write into the data directory %s" : "Non é posíbel crear ou escribir o directorio «data» %s", @@ -104,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Non é posíbel estabelecer permisos para %s, non se atopa o elemento", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas", "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Non é posíbel limpar a data de caducidade. É necesaria algunha compartición para ter unha data de caducidade.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "A infraestrutura de compartición %s ten que implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Non se atopou a infraestrutura de compartición %s", "Sharing backend for %s not found" : "Non se atopou a infraestrutura de compartición para %s", diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json index 532c5cf1ce4..ccdba66446c 100644 --- a/lib/l10n/gl.json +++ b/lib/l10n/gl.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["hai %n hora","hai %n horas"], "_%n minute ago_::_%n minutes ago_" : ["hai %n minuto","hai %n minutos"], "seconds ago" : "segundos atrás", - "Database Error" : "Produciuse un erro na base de datos", - "Please contact your system administrator." : "Contacte co administrador.", "web services under your control" : "servizos web baixo o seu control", "Empty filename is not allowed" : "Non está permitido deixar baleiro o nome de ficheiro", "Dot files are not allowed" : "Non se admiten os ficheiros con punto", "4-byte characters are not supported in file names" : "Non se admiten os caracteres de 4 bytes nos nomes de ficheiro", "File name is a reserved word" : "O nome de ficheiro é unha palabra reservada", "File name contains at least one invalid character" : "O nome de ficheiro contén algún carácter incorrecto", + "File name is too long" : "O nome de ficheiro é longo de máis", "App directory already exists" : "Xa existe o directorio da aplicación", "Can't create app folder. Please fix permissions. %s" : "Non é posíbel crear o cartafol de aplicacións. Corrixa os permisos. %s", "No source specified when installing app" : "Non foi especificada ningunha orixe ao instalar a aplicación", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Para obter mellores resultados, considere o emprego dun servidor GNU/Linux no seu canto.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Semella que esta instancia de %s está a funcionar nun entorno PHP de 32 bisst e o open_basedir foi configurado no php.ini. Isto provocará problemas con ficheiros maiores de 4 GB e está absolutamente desaconsellado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Retire o axuste de open_basedir no php.ini ou cambie a PHP de 64 bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Semella que esta instancia %s está a funcionar nun entorno PHP de 32 bits e cURL non está instalado. Isto provocará problemas con ficheiros maiores de 4 GB e está absolutamente desaconsellado.", - "Please install the cURL extension and restart your webserver." : "Instale a extensión cURL e reinicie o servidor web.", "Set an admin username." : "Estabeleza un nome de usuario administrador", "Set an admin password." : "Estabeleza un contrasinal de administrador", "Can't create or write into the data directory %s" : "Non é posíbel crear ou escribir o directorio «data» %s", @@ -102,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Non é posíbel estabelecer permisos para %s, non se atopa o elemento", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas", "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Non é posíbel limpar a data de caducidade. É necesaria algunha compartición para ter unha data de caducidade.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "A infraestrutura de compartición %s ten que implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Non se atopou a infraestrutura de compartición %s", "Sharing backend for %s not found" : "Non se atopou a infraestrutura de compartición para %s", diff --git a/lib/l10n/hr.js b/lib/l10n/hr.js index c4c8f6d526f..a33aeed360c 100644 --- a/lib/l10n/hr.js +++ b/lib/l10n/hr.js @@ -32,8 +32,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["prije %n sata","prije %n sati","prije %n sati"], "_%n minute ago_::_%n minutes ago_" : ["prije %n minute","prije %n minuta","prije %n minuta"], "seconds ago" : "prije par sekundi", - "Database Error" : "Database Greska", - "Please contact your system administrator." : "Molimo vas da kontaktirate vaseg sistem administratora.", "web services under your control" : "web usluge pod vašom kontrolom", "App directory already exists" : "Direktorij aplikacije već postoji", "Can't create app folder. Please fix permissions. %s" : "Nije moguće kreirati mapu aplikacija. molimo popravite dozvole. %s", @@ -70,7 +68,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Molimo uklonite postavke za open_basedir setting iz datoteke php.ini ili se prebacite na 64-bitni PHP.", - "Please install the cURL extension and restart your webserver." : "Molimo instalirajte cURL dodatak i ponovo pokrenite Vaš web poslužitelj.", "Set an admin username." : "Navedite admin korisničko ime.", "Set an admin password." : "Navedite admin lozinku.", "Can't create or write into the data directory %s" : "Ne moze se kreirati ili napisati u imenik podataka %s", diff --git a/lib/l10n/hr.json b/lib/l10n/hr.json index 7512f6b76a6..67ee64ee66f 100644 --- a/lib/l10n/hr.json +++ b/lib/l10n/hr.json @@ -30,8 +30,6 @@ "_%n hour ago_::_%n hours ago_" : ["prije %n sata","prije %n sati","prije %n sati"], "_%n minute ago_::_%n minutes ago_" : ["prije %n minute","prije %n minuta","prije %n minuta"], "seconds ago" : "prije par sekundi", - "Database Error" : "Database Greska", - "Please contact your system administrator." : "Molimo vas da kontaktirate vaseg sistem administratora.", "web services under your control" : "web usluge pod vašom kontrolom", "App directory already exists" : "Direktorij aplikacije već postoji", "Can't create app folder. Please fix permissions. %s" : "Nije moguće kreirati mapu aplikacija. molimo popravite dozvole. %s", @@ -68,7 +66,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Molimo uklonite postavke za open_basedir setting iz datoteke php.ini ili se prebacite na 64-bitni PHP.", - "Please install the cURL extension and restart your webserver." : "Molimo instalirajte cURL dodatak i ponovo pokrenite Vaš web poslužitelj.", "Set an admin username." : "Navedite admin korisničko ime.", "Set an admin password." : "Navedite admin lozinku.", "Can't create or write into the data directory %s" : "Ne moze se kreirati ili napisati u imenik podataka %s", diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js index 5ff6c0b00e4..1fa6d95b078 100644 --- a/lib/l10n/hu_HU.js +++ b/lib/l10n/hu_HU.js @@ -62,7 +62,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.", - "Please install the cURL extension and restart your webserver." : "Kérlek, telepítsd a cURL bővítményt és indítsd újra a webszervert.", "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.", "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.", "Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s", diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json index 33097e653bf..31cd62c83d5 100644 --- a/lib/l10n/hu_HU.json +++ b/lib/l10n/hu_HU.json @@ -60,7 +60,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.", - "Please install the cURL extension and restart your webserver." : "Kérlek, telepítsd a cURL bővítményt és indítsd újra a webszervert.", "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.", "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.", "Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s", diff --git a/lib/l10n/id.js b/lib/l10n/id.js index 7bcfd2e035b..05b958b1dd1 100644 --- a/lib/l10n/id.js +++ b/lib/l10n/id.js @@ -37,8 +37,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n jam yang lalu"], "_%n minute ago_::_%n minutes ago_" : ["%n menit yang lalu"], "seconds ago" : "beberapa detik yang lalu", - "Database Error" : "Basis Data Galat", - "Please contact your system administrator." : "Mohon hubungi administrator sistem Anda.", "web services under your control" : "layanan web dalam kendali anda", "App directory already exists" : "Direktori Apl sudah ada", "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s", @@ -75,7 +73,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X tidak didukung dan %s tidak akan bekerja dengan baik pada platform ini. Gunakan dengan resiko Anda sendiri!", "For the best results, please consider using a GNU/Linux server instead." : "Untuk hasil terbaik, pertimbangkan untuk menggunakan server GNU/Linux sebagai gantinya. ", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mohon hapus pengaturan open_basedir didalam php.ini atau beralih ke PHP 64-bit.", - "Please install the cURL extension and restart your webserver." : "Mohon instal ekstensi cURL dan jalankan ulang server web.", "Set an admin username." : "Tetapkan nama pengguna admin.", "Set an admin password." : "Tetapkan sandi admin.", "Can't create or write into the data directory %s" : "Tidak dapat membuat atau menulis kedalam direktori data %s", diff --git a/lib/l10n/id.json b/lib/l10n/id.json index 777c220fe11..ae3e866a8bb 100644 --- a/lib/l10n/id.json +++ b/lib/l10n/id.json @@ -35,8 +35,6 @@ "_%n hour ago_::_%n hours ago_" : ["%n jam yang lalu"], "_%n minute ago_::_%n minutes ago_" : ["%n menit yang lalu"], "seconds ago" : "beberapa detik yang lalu", - "Database Error" : "Basis Data Galat", - "Please contact your system administrator." : "Mohon hubungi administrator sistem Anda.", "web services under your control" : "layanan web dalam kendali anda", "App directory already exists" : "Direktori Apl sudah ada", "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s", @@ -73,7 +71,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X tidak didukung dan %s tidak akan bekerja dengan baik pada platform ini. Gunakan dengan resiko Anda sendiri!", "For the best results, please consider using a GNU/Linux server instead." : "Untuk hasil terbaik, pertimbangkan untuk menggunakan server GNU/Linux sebagai gantinya. ", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mohon hapus pengaturan open_basedir didalam php.ini atau beralih ke PHP 64-bit.", - "Please install the cURL extension and restart your webserver." : "Mohon instal ekstensi cURL dan jalankan ulang server web.", "Set an admin username." : "Tetapkan nama pengguna admin.", "Set an admin password." : "Tetapkan sandi admin.", "Can't create or write into the data directory %s" : "Tidak dapat membuat atau menulis kedalam direktori data %s", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index 1415d5b066a..4a2deab9b51 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n ora fa","%n ore fa"], "_%n minute ago_::_%n minutes ago_" : ["%n minuto fa","%n minuti fa"], "seconds ago" : "secondi fa", - "Database Error" : "Errore del database", - "Please contact your system administrator." : "Contatta il tuo amministratore di sistema.", "web services under your control" : "servizi web nelle tue mani", "Empty filename is not allowed" : "Un nome di file vuoto non è consentito", "Dot files are not allowed" : "I file con un punto iniziale non sono consentiti", "4-byte characters are not supported in file names" : "I caratteri di 4 byte non sono supportati nei nomi dei file", "File name is a reserved word" : "Il nome del file è una parola riservata", "File name contains at least one invalid character" : "Il nome del file contiene almeno un carattere non valido", + "File name is too long" : "Il nome del file è troppo lungo", "App directory already exists" : "La cartella dell'applicazione esiste già", "Can't create app folder. Please fix permissions. %s" : "Impossibile creare la cartella dell'applicazione. Correggi i permessi. %s", "No source specified when installing app" : "Nessuna fonte specificata durante l'installazione dell'applicazione", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Per avere il risultato migliore, prendi in considerazione l'utilizzo di un server GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Sembra che questa istanza di %s sia in esecuzione in un ambiente PHP a 32 bit e che open_basedir sia stata configurata in php.ini. Ciò comporterà problemi con i file più grandi di 4 GB ed è altamente sconsigliato.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Rimuovi l'impostazione di open_basedir nel tuo php.ini o passa alla versione a 64 bit di PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Sembra che questa istanza di %s sia in esecuzione in un ambiente PHP a 32 bit e che cURL non sia installato. Ciò comporterà problemi con i file più grandi di 4 GB ed è altamente sconsigliato.", - "Please install the cURL extension and restart your webserver." : "Installa l'estensione cURL e riavvia il server web.", "Set an admin username." : "Imposta un nome utente di amministrazione.", "Set an admin password." : "Imposta una password di amministrazione.", "Can't create or write into the data directory %s" : "Impossibile creare o scrivere nella cartella dei dati %s", @@ -104,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Impostazione permessi per %s non riuscita, poiché l'elemento non è stato trovato", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione", "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Impossibile cancellare la data di scadenza. Le condivisioni devono avere una data di scadenza.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Il motore di condivisione %s deve implementare l'interfaccia OCP\\Share_Backend", "Sharing backend %s not found" : "Motore di condivisione %s non trovato", "Sharing backend for %s not found" : "Motore di condivisione di %s non trovato", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index cf9df4c972a..07e20706e3e 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n ora fa","%n ore fa"], "_%n minute ago_::_%n minutes ago_" : ["%n minuto fa","%n minuti fa"], "seconds ago" : "secondi fa", - "Database Error" : "Errore del database", - "Please contact your system administrator." : "Contatta il tuo amministratore di sistema.", "web services under your control" : "servizi web nelle tue mani", "Empty filename is not allowed" : "Un nome di file vuoto non è consentito", "Dot files are not allowed" : "I file con un punto iniziale non sono consentiti", "4-byte characters are not supported in file names" : "I caratteri di 4 byte non sono supportati nei nomi dei file", "File name is a reserved word" : "Il nome del file è una parola riservata", "File name contains at least one invalid character" : "Il nome del file contiene almeno un carattere non valido", + "File name is too long" : "Il nome del file è troppo lungo", "App directory already exists" : "La cartella dell'applicazione esiste già", "Can't create app folder. Please fix permissions. %s" : "Impossibile creare la cartella dell'applicazione. Correggi i permessi. %s", "No source specified when installing app" : "Nessuna fonte specificata durante l'installazione dell'applicazione", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Per avere il risultato migliore, prendi in considerazione l'utilizzo di un server GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Sembra che questa istanza di %s sia in esecuzione in un ambiente PHP a 32 bit e che open_basedir sia stata configurata in php.ini. Ciò comporterà problemi con i file più grandi di 4 GB ed è altamente sconsigliato.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Rimuovi l'impostazione di open_basedir nel tuo php.ini o passa alla versione a 64 bit di PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Sembra che questa istanza di %s sia in esecuzione in un ambiente PHP a 32 bit e che cURL non sia installato. Ciò comporterà problemi con i file più grandi di 4 GB ed è altamente sconsigliato.", - "Please install the cURL extension and restart your webserver." : "Installa l'estensione cURL e riavvia il server web.", "Set an admin username." : "Imposta un nome utente di amministrazione.", "Set an admin password." : "Imposta una password di amministrazione.", "Can't create or write into the data directory %s" : "Impossibile creare o scrivere nella cartella dei dati %s", @@ -102,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Impostazione permessi per %s non riuscita, poiché l'elemento non è stato trovato", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione", "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Impossibile cancellare la data di scadenza. Le condivisioni devono avere una data di scadenza.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Il motore di condivisione %s deve implementare l'interfaccia OCP\\Share_Backend", "Sharing backend %s not found" : "Motore di condivisione %s non trovato", "Sharing backend for %s not found" : "Motore di condivisione di %s non trovato", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 2305de5b312..ff781afc8d0 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -35,9 +35,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n 時間前"], "_%n minute ago_::_%n minutes ago_" : ["%n 分前"], "seconds ago" : "数秒前", - "Database Error" : "データベースエラー", - "Please contact your system administrator." : "システム管理者に問い合わせてください。", "web services under your control" : "あなたの管理下のウェブサービス", + "Empty filename is not allowed" : "空のファイル名は許可されていません", + "Dot files are not allowed" : "ドットファイルは許可されていません", + "4-byte characters are not supported in file names" : "ファイル名に4バイト文字を使用するのはサポートされていません", + "File name is a reserved word" : "ファイル名が予約された単語です", + "File name contains at least one invalid character" : "ファイル名に1文字以上の無効な文字が含まれています", + "File name is too long" : "ファイル名が長すぎます", "App directory already exists" : "アプリディレクトリはすでに存在します", "Can't create app folder. Please fix permissions. %s" : "アプリフォルダーを作成できませんでした。%s のパーミッションを修正してください。", "No source specified when installing app" : "アプリインストール時のソースが未指定", @@ -73,7 +77,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X では、サポートされていません。このOSでは、%sは正常に動作しないかもしれません。ご自身の責任においてご利用ください。", "For the best results, please consider using a GNU/Linux server instead." : "最も良い方法としては、代わりにGNU/Linuxサーバーを利用することをご検討ください。", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "php.ini から open_basedir 設定を削除するか、64bit PHPに切り替えてください。", - "Please install the cURL extension and restart your webserver." : "cURL拡張をインストールして、WEBサーバーを再起動してください。", "Set an admin username." : "管理者のユーザー名を設定", "Set an admin password." : "管理者のパスワードを設定。", "Can't create or write into the data directory %s" : "%s データディレクトリに作成、書き込みができません", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index f3956fe1425..f9dc5322c0c 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -33,9 +33,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n 時間前"], "_%n minute ago_::_%n minutes ago_" : ["%n 分前"], "seconds ago" : "数秒前", - "Database Error" : "データベースエラー", - "Please contact your system administrator." : "システム管理者に問い合わせてください。", "web services under your control" : "あなたの管理下のウェブサービス", + "Empty filename is not allowed" : "空のファイル名は許可されていません", + "Dot files are not allowed" : "ドットファイルは許可されていません", + "4-byte characters are not supported in file names" : "ファイル名に4バイト文字を使用するのはサポートされていません", + "File name is a reserved word" : "ファイル名が予約された単語です", + "File name contains at least one invalid character" : "ファイル名に1文字以上の無効な文字が含まれています", + "File name is too long" : "ファイル名が長すぎます", "App directory already exists" : "アプリディレクトリはすでに存在します", "Can't create app folder. Please fix permissions. %s" : "アプリフォルダーを作成できませんでした。%s のパーミッションを修正してください。", "No source specified when installing app" : "アプリインストール時のソースが未指定", @@ -71,7 +75,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X では、サポートされていません。このOSでは、%sは正常に動作しないかもしれません。ご自身の責任においてご利用ください。", "For the best results, please consider using a GNU/Linux server instead." : "最も良い方法としては、代わりにGNU/Linuxサーバーを利用することをご検討ください。", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "php.ini から open_basedir 設定を削除するか、64bit PHPに切り替えてください。", - "Please install the cURL extension and restart your webserver." : "cURL拡張をインストールして、WEBサーバーを再起動してください。", "Set an admin username." : "管理者のユーザー名を設定", "Set an admin password." : "管理者のパスワードを設定。", "Can't create or write into the data directory %s" : "%s データディレクトリに作成、書き込みができません", diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js index 1a8616174b0..0bea0a1c423 100644 --- a/lib/l10n/ko.js +++ b/lib/l10n/ko.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n시간 전"], "_%n minute ago_::_%n minutes ago_" : ["%n분 전"], "seconds ago" : "초 전", - "Database Error" : "데이터베이스 오류", - "Please contact your system administrator." : "시스템 관리자에게 연락하십시오.", "web services under your control" : "내가 관리하는 웹 서비스", "App directory already exists" : "앱 디렉터리가 이미 존재합니다.", "Can't create app folder. Please fix permissions. %s" : "앱 폴더를 만들 수 없습니다. 권한을 수정하십시오. %s", @@ -73,7 +71,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X은 지원하지 않으며 %s이(가) 이 플랫폼에서 올바르게 작동하지 않을 수도 있습니다. 본인 책임으로 사용하십시오! ", "For the best results, please consider using a GNU/Linux server instead." : "더 좋은 결과를 얻으려면 GNU/Linux 서버를 사용하는 것을 권장합니다.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "php.ini의 open_basedir 설정을 삭제하거나 64비트 PHP로 전환하십시오.", - "Please install the cURL extension and restart your webserver." : "cURL 확장 기능을 설치한 다음 웹 서버를 다시 시작하십시오.", "Set an admin username." : "관리자의 사용자 이름을 설정합니다.", "Set an admin password." : "관리자의 암호를 설정합니다.", "Can't create or write into the data directory %s" : "데이터 디렉터리 %s을(를) 만들거나 기록할 수 없음", diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json index 776418c2e54..3df278e8073 100644 --- a/lib/l10n/ko.json +++ b/lib/l10n/ko.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["%n시간 전"], "_%n minute ago_::_%n minutes ago_" : ["%n분 전"], "seconds ago" : "초 전", - "Database Error" : "데이터베이스 오류", - "Please contact your system administrator." : "시스템 관리자에게 연락하십시오.", "web services under your control" : "내가 관리하는 웹 서비스", "App directory already exists" : "앱 디렉터리가 이미 존재합니다.", "Can't create app folder. Please fix permissions. %s" : "앱 폴더를 만들 수 없습니다. 권한을 수정하십시오. %s", @@ -71,7 +69,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X은 지원하지 않으며 %s이(가) 이 플랫폼에서 올바르게 작동하지 않을 수도 있습니다. 본인 책임으로 사용하십시오! ", "For the best results, please consider using a GNU/Linux server instead." : "더 좋은 결과를 얻으려면 GNU/Linux 서버를 사용하는 것을 권장합니다.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "php.ini의 open_basedir 설정을 삭제하거나 64비트 PHP로 전환하십시오.", - "Please install the cURL extension and restart your webserver." : "cURL 확장 기능을 설치한 다음 웹 서버를 다시 시작하십시오.", "Set an admin username." : "관리자의 사용자 이름을 설정합니다.", "Set an admin password." : "관리자의 암호를 설정합니다.", "Can't create or write into the data directory %s" : "데이터 디렉터리 %s을(를) 만들거나 기록할 수 없음", diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js index 789671d5e0d..554045b2be9 100644 --- a/lib/l10n/nb_NO.js +++ b/lib/l10n/nb_NO.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["for %n time siden","for %n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"], "seconds ago" : "for få sekunder siden", - "Database Error" : "Databasefeil", - "Please contact your system administrator." : "Vennligst kontakt systemadministratoren.", "web services under your control" : "webtjenester som du kontrollerer", "App directory already exists" : "App-mappe finnes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke opprette app-mappe. Vennligst ordne opp i tillatelser. %s", @@ -73,7 +71,6 @@ OC.L10N.register( "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vennligst fjern innstillingen open_basedir i php.ini eller bytt til 64-bit PHP.", - "Please install the cURL extension and restart your webserver." : "Installer utvidelsen cURL og start web-serveren på nytt.", "Set an admin username." : "Sett et admin-brukernavn.", "Set an admin password." : "Sett et admin-passord.", "Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s", diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json index 1f0f27b0061..70e1d2e5b8e 100644 --- a/lib/l10n/nb_NO.json +++ b/lib/l10n/nb_NO.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["for %n time siden","for %n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"], "seconds ago" : "for få sekunder siden", - "Database Error" : "Databasefeil", - "Please contact your system administrator." : "Vennligst kontakt systemadministratoren.", "web services under your control" : "webtjenester som du kontrollerer", "App directory already exists" : "App-mappe finnes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke opprette app-mappe. Vennligst ordne opp i tillatelser. %s", @@ -71,7 +69,6 @@ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vennligst fjern innstillingen open_basedir i php.ini eller bytt til 64-bit PHP.", - "Please install the cURL extension and restart your webserver." : "Installer utvidelsen cURL og start web-serveren på nytt.", "Set an admin username." : "Sett et admin-brukernavn.", "Set an admin password." : "Sett et admin-passord.", "Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 0e162f9756d..32fd1933487 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n uur geleden","%n uur geleden"], "_%n minute ago_::_%n minutes ago_" : ["%n minuut geleden","%n minuten geleden"], "seconds ago" : "seconden geleden", - "Database Error" : "Database fout", - "Please contact your system administrator." : "Neem contact op met uw systeembeheerder.", "web services under your control" : "Webdiensten in eigen beheer", "Empty filename is not allowed" : "Een lege bestandsnaam is niet toegestaan", "Dot files are not allowed" : "Punt bestanden zijn niet toegestaan", "4-byte characters are not supported in file names" : "4-byte tekens in bestandsnamen worden niet ondersteund", "File name is a reserved word" : "Bestandsnaam is een gereserveerd woord", "File name contains at least one invalid character" : "De bestandsnaam bevat ten minste één verboden teken", + "File name is too long" : "De bestandsnaam is te lang", "App directory already exists" : "App directory bestaat al", "Can't create app folder. Please fix permissions. %s" : "Kan de app map niet aanmaken, Herstel de permissies. %s", "No source specified when installing app" : "Geen bron opgegeven bij installatie van de app", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Voor het beste resultaat adviseren wij het gebruik van een GNU/Linux server.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Het lijkt erop dat deze %s versie draait in een 32 bits PHP omgeving en dat open_basedir is geconfigureerd in php.ini. Dat zal leiden tot problemen met bestanden groter dan 4 GB en wordt dus sterk afgeraden.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Verwijder de open_basedir instelling in php.ini of schakel over op de 64bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Het lijkt erop dat deze %s versie draait in een 32 bits PHP omgeving en dat cURL niet is geïnstalleerd. Dat zal leiden tot problemen met bestanden groter dan 4 GB en wordt dus sterk afgeraden.", - "Please install the cURL extension and restart your webserver." : "Installeer de cURL extensie en herstart uw webserver.", "Set an admin username." : "Stel de gebruikersnaam van de beheerder in.", "Set an admin password." : "Stel een beheerderswachtwoord in.", "Can't create or write into the data directory %s" : "Kan niets creëren of wegschrijven in datadirectory %s", @@ -104,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Instellen van de permissies voor %s is mislukt, omdat het object niet is gevonden", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kon vervaldatum niet instellen. Shares kunnen niet langer dan %s vervallen na het moment van delen", "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Kon vervaldatum niet weghalen. Shares moeten een vervaldatum hebben.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Het share-backend %s moet de OCP\\Share_Backend interface implementeren", "Sharing backend %s not found" : "Het share-backend %s is niet gevonden", "Sharing backend for %s not found" : "Het share-backend voor %s is niet gevonden", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index ae01293c152..380c3da46c7 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n uur geleden","%n uur geleden"], "_%n minute ago_::_%n minutes ago_" : ["%n minuut geleden","%n minuten geleden"], "seconds ago" : "seconden geleden", - "Database Error" : "Database fout", - "Please contact your system administrator." : "Neem contact op met uw systeembeheerder.", "web services under your control" : "Webdiensten in eigen beheer", "Empty filename is not allowed" : "Een lege bestandsnaam is niet toegestaan", "Dot files are not allowed" : "Punt bestanden zijn niet toegestaan", "4-byte characters are not supported in file names" : "4-byte tekens in bestandsnamen worden niet ondersteund", "File name is a reserved word" : "Bestandsnaam is een gereserveerd woord", "File name contains at least one invalid character" : "De bestandsnaam bevat ten minste één verboden teken", + "File name is too long" : "De bestandsnaam is te lang", "App directory already exists" : "App directory bestaat al", "Can't create app folder. Please fix permissions. %s" : "Kan de app map niet aanmaken, Herstel de permissies. %s", "No source specified when installing app" : "Geen bron opgegeven bij installatie van de app", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Voor het beste resultaat adviseren wij het gebruik van een GNU/Linux server.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Het lijkt erop dat deze %s versie draait in een 32 bits PHP omgeving en dat open_basedir is geconfigureerd in php.ini. Dat zal leiden tot problemen met bestanden groter dan 4 GB en wordt dus sterk afgeraden.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Verwijder de open_basedir instelling in php.ini of schakel over op de 64bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Het lijkt erop dat deze %s versie draait in een 32 bits PHP omgeving en dat cURL niet is geïnstalleerd. Dat zal leiden tot problemen met bestanden groter dan 4 GB en wordt dus sterk afgeraden.", - "Please install the cURL extension and restart your webserver." : "Installeer de cURL extensie en herstart uw webserver.", "Set an admin username." : "Stel de gebruikersnaam van de beheerder in.", "Set an admin password." : "Stel een beheerderswachtwoord in.", "Can't create or write into the data directory %s" : "Kan niets creëren of wegschrijven in datadirectory %s", @@ -102,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Instellen van de permissies voor %s is mislukt, omdat het object niet is gevonden", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kon vervaldatum niet instellen. Shares kunnen niet langer dan %s vervallen na het moment van delen", "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Kon vervaldatum niet weghalen. Shares moeten een vervaldatum hebben.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Het share-backend %s moet de OCP\\Share_Backend interface implementeren", "Sharing backend %s not found" : "Het share-backend %s is niet gevonden", "Sharing backend for %s not found" : "Het share-backend voor %s is niet gevonden", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index 495eb665306..0be4d823a0d 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -8,9 +8,15 @@ OC.L10N.register( "Sample configuration detected" : "Wykryto przykładową konfigurację", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Wykryto skopiowanie przykładowej konfiguracji. To może popsuć Twoją instalację i nie jest wspierane. Proszę przeczytać dokumentację przed dokonywaniem zmian w config.php", "PHP %s or higher is required." : "PHP %s lub wyższe jest wymagane.", + "PHP with a version lower than %s is required." : "Wersja PHP jest niższa niż %s, która jest wymagana.", "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s", + "The command line tool %s could not be found" : "Narzędzie konsoli %s nie zostało znalezione", "The library %s is not available." : "Biblioteka %s nie jest dostępna.", + "Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s w wersji wyższej niż %s, która jest wymagana - dostępna wersja %s.", + "Library %s with a version lower than %s is required - available version %s." : "Biblioteka w wersji %s jest niższa niż %s, która jest wymagana - dostępna wersja %s.", "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s", + "ownCloud %s or higher is required." : "ownCloud %s jest w wersji wyższej niż wymagana.", + "ownCloud with a version lower than %s is required." : "ownCloud jest w wersji niższej niż wymagana wersja %s", "Help" : "Pomoc", "Personal" : "Osobiste", "Users" : "Użytkownicy", @@ -29,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu"], "_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"], "seconds ago" : "sekund temu", - "Database Error" : "Błąd bazy danych", - "Please contact your system administrator." : "Proszę skontaktować się z administratorem sytemu.", "web services under your control" : "Kontrolowane serwisy", "App directory already exists" : "Katalog aplikacji już isnieje", "Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s", @@ -66,7 +70,6 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", "For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Zainstaluj rozszerzenie cURL, a następnie zrestartuj swój serwer web.", "Set an admin username." : "Ustaw nazwę administratora.", "Set an admin password." : "Ustaw hasło administratora.", "Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index e3d38cdbf5a..12de24755d6 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -6,9 +6,15 @@ "Sample configuration detected" : "Wykryto przykładową konfigurację", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Wykryto skopiowanie przykładowej konfiguracji. To może popsuć Twoją instalację i nie jest wspierane. Proszę przeczytać dokumentację przed dokonywaniem zmian w config.php", "PHP %s or higher is required." : "PHP %s lub wyższe jest wymagane.", + "PHP with a version lower than %s is required." : "Wersja PHP jest niższa niż %s, która jest wymagana.", "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s", + "The command line tool %s could not be found" : "Narzędzie konsoli %s nie zostało znalezione", "The library %s is not available." : "Biblioteka %s nie jest dostępna.", + "Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s w wersji wyższej niż %s, która jest wymagana - dostępna wersja %s.", + "Library %s with a version lower than %s is required - available version %s." : "Biblioteka w wersji %s jest niższa niż %s, która jest wymagana - dostępna wersja %s.", "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s", + "ownCloud %s or higher is required." : "ownCloud %s jest w wersji wyższej niż wymagana.", + "ownCloud with a version lower than %s is required." : "ownCloud jest w wersji niższej niż wymagana wersja %s", "Help" : "Pomoc", "Personal" : "Osobiste", "Users" : "Użytkownicy", @@ -27,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu"], "_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"], "seconds ago" : "sekund temu", - "Database Error" : "Błąd bazy danych", - "Please contact your system administrator." : "Proszę skontaktować się z administratorem sytemu.", "web services under your control" : "Kontrolowane serwisy", "App directory already exists" : "Katalog aplikacji już isnieje", "Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s", @@ -64,7 +68,6 @@ "PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", "For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Zainstaluj rozszerzenie cURL, a następnie zrestartuj swój serwer web.", "Set an admin username." : "Ustaw nazwę administratora.", "Set an admin password." : "Ustaw hasło administratora.", "Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index b62121330da..07d1eb39fbf 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -37,13 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","ha %n horas"], "_%n minute ago_::_%n minutes ago_" : ["","ha %n minutos"], "seconds ago" : "segundos atrás", - "Database Error" : "Erro no Banco de Dados", - "Please contact your system administrator." : "Por favor cotactar seu administrador do sistema.", "web services under your control" : "serviços web sob seu controle", "Empty filename is not allowed" : "Um nome de arquivo vazio não é permitido.", "Dot files are not allowed" : "Dot arquivos não são permitidos", "4-byte characters are not supported in file names" : "Caracteres de 4-bytes não são suportados em nomes de arquivos", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", + "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido", + "File name is too long" : "O nome do arquivo é muito longo", "App directory already exists" : "Diretório App já existe", "Can't create app folder. Please fix permissions. %s" : "Não é possível criar pasta app. Corrija as permissões. %s", "No source specified when installing app" : "Nenhuma fonte foi especificada enquanto instalava o aplicativo", @@ -80,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou altere o PHP para 64bit.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o cURL não está instalado. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale a extensão cURL e reinicie seu servidor web.", "Set an admin username." : "Defina um nome do usuário administrador.", "Set an admin password." : "Defina uma senha de administrador.", "Can't create or write into the data directory %s" : "Não é possível criar ou gravar no diretório de dados %s", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index fccbd744b38..8b356bd88fc 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -35,13 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["","ha %n horas"], "_%n minute ago_::_%n minutes ago_" : ["","ha %n minutos"], "seconds ago" : "segundos atrás", - "Database Error" : "Erro no Banco de Dados", - "Please contact your system administrator." : "Por favor cotactar seu administrador do sistema.", "web services under your control" : "serviços web sob seu controle", "Empty filename is not allowed" : "Um nome de arquivo vazio não é permitido.", "Dot files are not allowed" : "Dot arquivos não são permitidos", "4-byte characters are not supported in file names" : "Caracteres de 4-bytes não são suportados em nomes de arquivos", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", + "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido", + "File name is too long" : "O nome do arquivo é muito longo", "App directory already exists" : "Diretório App já existe", "Can't create app folder. Please fix permissions. %s" : "Não é possível criar pasta app. Corrija as permissões. %s", "No source specified when installing app" : "Nenhuma fonte foi especificada enquanto instalava o aplicativo", @@ -78,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou altere o PHP para 64bit.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o cURL não está instalado. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale a extensão cURL e reinicie seu servidor web.", "Set an admin username." : "Defina um nome do usuário administrador.", "Set an admin password." : "Defina uma senha de administrador.", "Can't create or write into the data directory %s" : "Não é possível criar ou gravar no diretório de dados %s", diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js index 517940c527c..6b8f05413f3 100644 --- a/lib/l10n/pt_PT.js +++ b/lib/l10n/pt_PT.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","%n horas atrás"], "_%n minute ago_::_%n minutes ago_" : ["","%n minutos atrás"], "seconds ago" : "Minutos atrás", - "Database Error" : "Erro da Base de Dados", - "Please contact your system administrator." : "Por favor contacte o administrador do sistema.", "web services under your control" : "serviços web sob o seu controlo", "Empty filename is not allowed" : "Não é permitido um ficheiro sem nome", "Dot files are not allowed" : "Ficheiros dot não são permitidos", "4-byte characters are not supported in file names" : "Carateres 4-byte não são suportados como nome de ficheiros", "File name is a reserved word" : "Nome de ficheiro é uma palavra reservada", "File name contains at least one invalid character" : "Nome de ficheiro contém pelo menos um caráter inválido", + "File name is too long" : "Nome do ficheiro demasiado longo", "App directory already exists" : "A directoria da aplicação já existe", "Can't create app folder. Please fix permissions. %s" : "Não foi possível criar a pasta da aplicação. Por favor verifique as permissões. %s", "No source specified when installing app" : "Não foi especificada uma fonte de instalação desta aplicação", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Para um melhor resultado, utilize antes o servidor GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que a instância %s está a ser executada num ambiente PHP de 32-bits e o open_basedir foi configurado no php.ini. Isto levará a problemas com ficheiros de tamanho superior a 4 GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a definição open_basedir do seu php.ini ou altere o seu PHP para 64-bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que a instância %s está a ser executada num ambiente PHP de 32-bits e o cURL não está instalado. Isto levará a problemas com ficheiros de tamanho superior a 4 GB e é altamente desencorajado.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale a extensão cURL e reinicie o seu servidor da Web.", "Set an admin username." : "Definir um nome de utilizador de administrador", "Set an admin password." : "Definiar uma password de administrador", "Can't create or write into the data directory %s" : "Não é possível criar ou escrever a directoria data %s", @@ -104,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "Definir permissões para %s falhou, porque o item não foi encontrado", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas", "Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possível limpar a data de expiração. As partilhas devem ter uma data de expiração.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Ao partilhar a interface %s deve implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Não foi encontrada a partilha da interface %s", "Sharing backend for %s not found" : "Não foi encontrada a partilha da interface para %s", diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json index 4110c2c4060..d171e3585c6 100644 --- a/lib/l10n/pt_PT.json +++ b/lib/l10n/pt_PT.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["","%n horas atrás"], "_%n minute ago_::_%n minutes ago_" : ["","%n minutos atrás"], "seconds ago" : "Minutos atrás", - "Database Error" : "Erro da Base de Dados", - "Please contact your system administrator." : "Por favor contacte o administrador do sistema.", "web services under your control" : "serviços web sob o seu controlo", "Empty filename is not allowed" : "Não é permitido um ficheiro sem nome", "Dot files are not allowed" : "Ficheiros dot não são permitidos", "4-byte characters are not supported in file names" : "Carateres 4-byte não são suportados como nome de ficheiros", "File name is a reserved word" : "Nome de ficheiro é uma palavra reservada", "File name contains at least one invalid character" : "Nome de ficheiro contém pelo menos um caráter inválido", + "File name is too long" : "Nome do ficheiro demasiado longo", "App directory already exists" : "A directoria da aplicação já existe", "Can't create app folder. Please fix permissions. %s" : "Não foi possível criar a pasta da aplicação. Por favor verifique as permissões. %s", "No source specified when installing app" : "Não foi especificada uma fonte de instalação desta aplicação", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Para um melhor resultado, utilize antes o servidor GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que a instância %s está a ser executada num ambiente PHP de 32-bits e o open_basedir foi configurado no php.ini. Isto levará a problemas com ficheiros de tamanho superior a 4 GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a definição open_basedir do seu php.ini ou altere o seu PHP para 64-bits.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que a instância %s está a ser executada num ambiente PHP de 32-bits e o cURL não está instalado. Isto levará a problemas com ficheiros de tamanho superior a 4 GB e é altamente desencorajado.", - "Please install the cURL extension and restart your webserver." : "Por favor, instale a extensão cURL e reinicie o seu servidor da Web.", "Set an admin username." : "Definir um nome de utilizador de administrador", "Set an admin password." : "Definiar uma password de administrador", "Can't create or write into the data directory %s" : "Não é possível criar ou escrever a directoria data %s", @@ -102,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "Definir permissões para %s falhou, porque o item não foi encontrado", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas", "Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possível limpar a data de expiração. As partilhas devem ter uma data de expiração.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Ao partilhar a interface %s deve implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Não foi encontrada a partilha da interface %s", "Sharing backend for %s not found" : "Não foi encontrada a partilha da interface para %s", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 19e5b95fcd3..82ab53bdf03 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -37,14 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад"], "_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад"], "seconds ago" : "менее минуты", - "Database Error" : "Ошибка базы данных", - "Please contact your system administrator." : "Пожалуйста, свяжитесь с вашим администратором.", "web services under your control" : "веб-сервисы под вашим управлением", "Empty filename is not allowed" : "Пустые имена файлов не допускаются", "Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются", "4-byte characters are not supported in file names" : "4-х байтовые символы в имени файлов не допускаются", "File name is a reserved word" : "Имя файла является зарезервированным словом", "File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ", + "File name is too long" : "Имя файла слишком длинное.", "App directory already exists" : "Каталог приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s", "No source specified when installing app" : "Не указан источник при установке приложения", @@ -81,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, рассмотрите вариант использования сервера на GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и open_basedir должен быть настроен в php.ini. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Удалите директиву open_basedir из файла php.ini или смените PHP на 64х разрядную сборку.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и cURL не установлен. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.", - "Please install the cURL extension and restart your webserver." : "Установите расширение cURL и перезапустите веб-сервер.", "Set an admin username." : "Задать имя пользователя для admin.", "Set an admin password." : "Задать пароль для admin.", "Can't create or write into the data directory %s" : "Невозможно создать или записать в каталог данных %s", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index fbf5ab1bbf5..8bf4786e7f6 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -35,14 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад"], "_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад"], "seconds ago" : "менее минуты", - "Database Error" : "Ошибка базы данных", - "Please contact your system administrator." : "Пожалуйста, свяжитесь с вашим администратором.", "web services under your control" : "веб-сервисы под вашим управлением", "Empty filename is not allowed" : "Пустые имена файлов не допускаются", "Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются", "4-byte characters are not supported in file names" : "4-х байтовые символы в имени файлов не допускаются", "File name is a reserved word" : "Имя файла является зарезервированным словом", "File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ", + "File name is too long" : "Имя файла слишком длинное.", "App directory already exists" : "Каталог приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s", "No source specified when installing app" : "Не указан источник при установке приложения", @@ -79,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, рассмотрите вариант использования сервера на GNU/Linux.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и open_basedir должен быть настроен в php.ini. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Удалите директиву open_basedir из файла php.ini или смените PHP на 64х разрядную сборку.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Кажется что экземпляр этого %s работает в 32-битной PHP среде и cURL не установлен. Это приведет к проблемам с файлами более 4 ГБ и это настоятельно не рекомендуется.", - "Please install the cURL extension and restart your webserver." : "Установите расширение cURL и перезапустите веб-сервер.", "Set an admin username." : "Задать имя пользователя для admin.", "Set an admin password." : "Задать пароль для admin.", "Can't create or write into the data directory %s" : "Невозможно создать или записать в каталог данных %s", diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js index 89ac5580b37..459165e218e 100644 --- a/lib/l10n/sk_SK.js +++ b/lib/l10n/sk_SK.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami"], "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami"], "seconds ago" : "pred sekundami", - "Database Error" : "Chyba databázy", - "Please contact your system administrator." : "Prosím kontaktujte administrátora.", "web services under your control" : "webové služby pod Vašou kontrolou", "App directory already exists" : "Aplikačný priečinok už existuje", "Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s", @@ -74,8 +72,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a v php.ini bola nastavená voľba open_basedir. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Prosím, odstráňte nastavenie open_basedir vo vašom php.ini alebo prejdite na 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a nie je nainštalovaná knižnica cURL. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.", - "Please install the cURL extension and restart your webserver." : "Nainštalujte si prosím cURL rozšírenie a reštartujte webserver.", "Set an admin username." : "Zadajte používateľské meno administrátora.", "Set an admin password." : "Zadajte heslo administrátora.", "Can't create or write into the data directory %s" : "Nemožno vytvoriť alebo zapisovať do priečinka dát %s", diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json index d3fcbb80ebc..fd0d3d13892 100644 --- a/lib/l10n/sk_SK.json +++ b/lib/l10n/sk_SK.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami"], "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami"], "seconds ago" : "pred sekundami", - "Database Error" : "Chyba databázy", - "Please contact your system administrator." : "Prosím kontaktujte administrátora.", "web services under your control" : "webové služby pod Vašou kontrolou", "App directory already exists" : "Aplikačný priečinok už existuje", "Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s", @@ -72,8 +70,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a v php.ini bola nastavená voľba open_basedir. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Prosím, odstráňte nastavenie open_basedir vo vašom php.ini alebo prejdite na 64-bit PHP.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a nie je nainštalovaná knižnica cURL. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.", - "Please install the cURL extension and restart your webserver." : "Nainštalujte si prosím cURL rozšírenie a reštartujte webserver.", "Set an admin username." : "Zadajte používateľské meno administrátora.", "Set an admin password." : "Zadajte heslo administrátora.", "Can't create or write into the data directory %s" : "Nemožno vytvoriť alebo zapisovať do priečinka dát %s", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index 5860ac00490..9746a47e004 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["pred %n uro","pred %n urama","pred %n urami","pred %n urami"], "_%n minute ago_::_%n minutes ago_" : ["pred %n minuto","pred %n minutama","pred %n minutami","pred %n minutami"], "seconds ago" : "pred nekaj sekundami", - "Database Error" : "Napaka podatkovne zbirke", - "Please contact your system administrator." : "Stopite v stik s skrbnikom sistema.", "web services under your control" : "spletne storitve pod vašim nadzorom", "Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.", "Dot files are not allowed" : "Skrite datoteke niso dovoljene", @@ -74,7 +72,6 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "Uporabniško ime ali geslo PostgreSQL ni veljavno", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s ne bo deloval zanesljivo v tem okolju. Program uporabljate na lastno odgovornost! ", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Namestiti je treba razširitev cURL in nato ponovno zagnati spletni strežnik.", "Set an admin username." : "Nastavi uporabniško ime skrbnika.", "Set an admin password." : "Nastavi geslo skrbnika.", "Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index 282ebd6b939..800c9e78a35 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["pred %n uro","pred %n urama","pred %n urami","pred %n urami"], "_%n minute ago_::_%n minutes ago_" : ["pred %n minuto","pred %n minutama","pred %n minutami","pred %n minutami"], "seconds ago" : "pred nekaj sekundami", - "Database Error" : "Napaka podatkovne zbirke", - "Please contact your system administrator." : "Stopite v stik s skrbnikom sistema.", "web services under your control" : "spletne storitve pod vašim nadzorom", "Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.", "Dot files are not allowed" : "Skrite datoteke niso dovoljene", @@ -72,7 +70,6 @@ "PostgreSQL username and/or password not valid" : "Uporabniško ime ali geslo PostgreSQL ni veljavno", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s ne bo deloval zanesljivo v tem okolju. Program uporabljate na lastno odgovornost! ", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.", - "Please install the cURL extension and restart your webserver." : "Namestiti je treba razširitev cURL in nato ponovno zagnati spletni strežnik.", "Set an admin username." : "Nastavi uporabniško ime skrbnika.", "Set an admin password." : "Nastavi geslo skrbnika.", "Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s", diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js index b9ff70012e1..50791bdf266 100644 --- a/lib/l10n/sr.js +++ b/lib/l10n/sr.js @@ -1,11 +1,21 @@ OC.L10N.register( "lib", { + "See %s" : "Погледајте %s", + "PHP %s or higher is required." : "Потребан је ПХП %s или новији.", + "PHP with a version lower than %s is required." : "Потребан је ПХП старији од %s.", + "Following databases are supported: %s" : "Следеће базе података су подржане: %s", + "The library %s is not available." : "Библиотека %s није доступна.", + "Following platforms are supported: %s" : "Следеће платформе су подржане: %s", + "ownCloud %s or higher is required." : "Оунклауд %s или новији је потребан.", "Help" : "Помоћ", "Personal" : "Лично", "Users" : "Корисници", "Admin" : "Администратор", "Recommended" : "Препоручено", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Апликација „%s“ не може бити инсталирана јер није компатибилна са овим издањем Оунклауда.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Апликација „%s“ не може бити инсталирана јер следеће зависности нису испуњене: %s", + "No app name specified" : "Није наведен назив апликације", "Unknown filetype" : "Непознат тип фајла", "Invalid image" : "Неисправна слика", "today" : "данас", @@ -14,22 +24,44 @@ OC.L10N.register( "last month" : "прошлог месеца", "_%n month ago_::_%n months ago_" : ["пре %n месец","пре %n месеца","пре %n месеци"], "last year" : "прошле године", - "_%n year ago_::_%n years ago_" : ["","",""], - "_%n hour ago_::_%n hours ago_" : ["","",""], - "_%n minute ago_::_%n minutes ago_" : ["","",""], + "_%n year ago_::_%n years ago_" : ["пре %n годину","пре %n године","пре %n година"], + "_%n hour ago_::_%n hours ago_" : ["пре %n сат","пре %n сата","пре %n сати"], + "_%n minute ago_::_%n minutes ago_" : ["пре %n минут","пре %n минута","пре %n минута"], "seconds ago" : "пре неколико секунди", - "web services under your control" : "веб сервиси под контролом", - "Application is not enabled" : "Апликација није омогућена", - "Authentication error" : "Грешка при провери идентитета", + "web services under your control" : "веб сервиси под вашом контролом", + "Empty filename is not allowed" : "Празан назив није дозвољен", + "Dot files are not allowed" : "Фајлови са почетном тачком у називу нису дозвољени", + "4-byte characters are not supported in file names" : "4-битни знакови нису подржани у називу фајлова", + "File name is a reserved word" : "Назив фајла је резервисана реч", + "File name contains at least one invalid character" : "Назив фајла садржи бар један недозвољен знак", + "File name is too long" : "Назив фајла је предугачак", + "App directory already exists" : "Директоријум апликација већ постоји", + "Archives of type %s are not supported" : "%s архиве нису подржане", + "Application is not enabled" : "Апликација није укључена", + "Authentication error" : "Грешка аутентификације", "Token expired. Please reload page." : "Жетон је истекао. Поново учитајте страницу.", + "Unknown user" : "Непознат корисник", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Мек ОС Икс није подржан и %s неће радити исправно на овој платформи. Користите га на сопствени ризик!", "For the best results, please consider using a GNU/Linux server instead." : "За најбоље резултате, размотрите употребу ГНУ/Линукс сервера.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном ПХП окружењу а open_basedir је подешен у php.ini фајлу. То може довести до проблема са фајловима већим од 4 GB те стога није препоручљиво.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Уклоните open_basedir поставку из php.ini фајла или пређите на 64-битни ПХП.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном ПХП окружењу а „cURL“ није инсталиран. То може довести до проблема са фајловима већим од 4 GB те стога није препоручљиво.", - "Please install the cURL extension and restart your webserver." : "Инсталирајте „cURL“ проширење и поново покрените веб сервер.", + "Set an admin username." : "Поставите име за администратора.", + "Set an admin password." : "Поставите лозинку за администратора.", + "%s shared »%s« with you" : "%s подели „%s“ са вама", + "You are not allowed to share %s" : "Није вам дозвољено да делите %s", "Could not find category \"%s\"" : "Не могу да пронађем категорију „%s“.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-\"" : "Само су следећи знакови дозвољени за корисничко име: „a-z“, „A-Z“, „0-9“ и „_.@-“", "A valid username must be provided" : "Морате унети исправно корисничко име", - "A valid password must be provided" : "Морате унети исправну лозинку" + "A valid password must be provided" : "Морате унети исправну лозинку", + "The username is already being used" : "Корисничко име се већ користи", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Нема драјвера базе података (скулајт, мајскул или постгрескул).", + "Setting locale to %s failed" : "Постављање локалитета на %s није успело", + "Please install one of these locales on your system and restart your webserver." : "Инсталирајте неки од ових локалитета на ваш систем и поново покрените веб сервер.", + "Please ask your server administrator to install the module." : "Замолите администратора вашег сервера да инсталира тај модул.", + "PHP module %s not installed." : "ПХП модул %s није инсталиран.", + "PHP setting \"%s\" is not set to \"%s\"." : "ПХП поставка „%s“ није постављена на „%s“.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "ПХП је очигледно подешен да се скида уметнуте док блокова. То ће учинити неколико кључних апликација недоступним.", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ово је вероватно изазвано кешом или акцелератором као што су ЗендОПкеш или еАкцелератор.", + "PostgreSQL >= 9 required" : "Захтеван је ПостгреСкул >= 9" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json index 4e32ed39c42..a8dcaf3b01e 100644 --- a/lib/l10n/sr.json +++ b/lib/l10n/sr.json @@ -1,9 +1,19 @@ { "translations": { + "See %s" : "Погледајте %s", + "PHP %s or higher is required." : "Потребан је ПХП %s или новији.", + "PHP with a version lower than %s is required." : "Потребан је ПХП старији од %s.", + "Following databases are supported: %s" : "Следеће базе података су подржане: %s", + "The library %s is not available." : "Библиотека %s није доступна.", + "Following platforms are supported: %s" : "Следеће платформе су подржане: %s", + "ownCloud %s or higher is required." : "Оунклауд %s или новији је потребан.", "Help" : "Помоћ", "Personal" : "Лично", "Users" : "Корисници", "Admin" : "Администратор", "Recommended" : "Препоручено", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Апликација „%s“ не може бити инсталирана јер није компатибилна са овим издањем Оунклауда.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Апликација „%s“ не може бити инсталирана јер следеће зависности нису испуњене: %s", + "No app name specified" : "Није наведен назив апликације", "Unknown filetype" : "Непознат тип фајла", "Invalid image" : "Неисправна слика", "today" : "данас", @@ -12,22 +22,44 @@ "last month" : "прошлог месеца", "_%n month ago_::_%n months ago_" : ["пре %n месец","пре %n месеца","пре %n месеци"], "last year" : "прошле године", - "_%n year ago_::_%n years ago_" : ["","",""], - "_%n hour ago_::_%n hours ago_" : ["","",""], - "_%n minute ago_::_%n minutes ago_" : ["","",""], + "_%n year ago_::_%n years ago_" : ["пре %n годину","пре %n године","пре %n година"], + "_%n hour ago_::_%n hours ago_" : ["пре %n сат","пре %n сата","пре %n сати"], + "_%n minute ago_::_%n minutes ago_" : ["пре %n минут","пре %n минута","пре %n минута"], "seconds ago" : "пре неколико секунди", - "web services under your control" : "веб сервиси под контролом", - "Application is not enabled" : "Апликација није омогућена", - "Authentication error" : "Грешка при провери идентитета", + "web services under your control" : "веб сервиси под вашом контролом", + "Empty filename is not allowed" : "Празан назив није дозвољен", + "Dot files are not allowed" : "Фајлови са почетном тачком у називу нису дозвољени", + "4-byte characters are not supported in file names" : "4-битни знакови нису подржани у називу фајлова", + "File name is a reserved word" : "Назив фајла је резервисана реч", + "File name contains at least one invalid character" : "Назив фајла садржи бар један недозвољен знак", + "File name is too long" : "Назив фајла је предугачак", + "App directory already exists" : "Директоријум апликација већ постоји", + "Archives of type %s are not supported" : "%s архиве нису подржане", + "Application is not enabled" : "Апликација није укључена", + "Authentication error" : "Грешка аутентификације", "Token expired. Please reload page." : "Жетон је истекао. Поново учитајте страницу.", + "Unknown user" : "Непознат корисник", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Мек ОС Икс није подржан и %s неће радити исправно на овој платформи. Користите га на сопствени ризик!", "For the best results, please consider using a GNU/Linux server instead." : "За најбоље резултате, размотрите употребу ГНУ/Линукс сервера.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном ПХП окружењу а open_basedir је подешен у php.ini фајлу. То може довести до проблема са фајловима већим од 4 GB те стога није препоручљиво.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Уклоните open_basedir поставку из php.ini фајла или пређите на 64-битни ПХП.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Изгледа да %s ради у 32-битном ПХП окружењу а „cURL“ није инсталиран. То може довести до проблема са фајловима већим од 4 GB те стога није препоручљиво.", - "Please install the cURL extension and restart your webserver." : "Инсталирајте „cURL“ проширење и поново покрените веб сервер.", + "Set an admin username." : "Поставите име за администратора.", + "Set an admin password." : "Поставите лозинку за администратора.", + "%s shared »%s« with you" : "%s подели „%s“ са вама", + "You are not allowed to share %s" : "Није вам дозвољено да делите %s", "Could not find category \"%s\"" : "Не могу да пронађем категорију „%s“.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-\"" : "Само су следећи знакови дозвољени за корисничко име: „a-z“, „A-Z“, „0-9“ и „_.@-“", "A valid username must be provided" : "Морате унети исправно корисничко име", - "A valid password must be provided" : "Морате унети исправну лозинку" + "A valid password must be provided" : "Морате унети исправну лозинку", + "The username is already being used" : "Корисничко име се већ користи", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Нема драјвера базе података (скулајт, мајскул или постгрескул).", + "Setting locale to %s failed" : "Постављање локалитета на %s није успело", + "Please install one of these locales on your system and restart your webserver." : "Инсталирајте неки од ових локалитета на ваш систем и поново покрените веб сервер.", + "Please ask your server administrator to install the module." : "Замолите администратора вашег сервера да инсталира тај модул.", + "PHP module %s not installed." : "ПХП модул %s није инсталиран.", + "PHP setting \"%s\" is not set to \"%s\"." : "ПХП поставка „%s“ није постављена на „%s“.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "ПХП је очигледно подешен да се скида уметнуте док блокова. То ће учинити неколико кључних апликација недоступним.", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ово је вероватно изазвано кешом или акцелератором као што су ЗендОПкеш или еАкцелератор.", + "PostgreSQL >= 9 required" : "Захтеван је ПостгреСкул >= 9" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/lib/l10n/sr@latin.js b/lib/l10n/sr@latin.js index 8c9ac2acc7c..cd5f8c10816 100644 --- a/lib/l10n/sr@latin.js +++ b/lib/l10n/sr@latin.js @@ -19,7 +19,6 @@ OC.L10N.register( "seconds ago" : "Pre par sekundi", "Authentication error" : "Greška pri autentifikaciji", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s neće raditi kako treba na ovoj platformi. Koristite na sopstvenu odgovornost.", - "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate uzmite u obzir korišćenje GNU/Linux servera.", - "Please install the cURL extension and restart your webserver." : "Molimo Vas da instalirate cURL ekstenziju i da ponovo pokrenete Vaš web server." + "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate uzmite u obzir korišćenje GNU/Linux servera." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/lib/l10n/sr@latin.json b/lib/l10n/sr@latin.json index ba606cfd53e..db1028fc422 100644 --- a/lib/l10n/sr@latin.json +++ b/lib/l10n/sr@latin.json @@ -17,7 +17,6 @@ "seconds ago" : "Pre par sekundi", "Authentication error" : "Greška pri autentifikaciji", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s neće raditi kako treba na ovoj platformi. Koristite na sopstvenu odgovornost.", - "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate uzmite u obzir korišćenje GNU/Linux servera.", - "Please install the cURL extension and restart your webserver." : "Molimo Vas da instalirate cURL ekstenziju i da ponovo pokrenete Vaš web server." + "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate uzmite u obzir korišćenje GNU/Linux servera." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js index af584df002f..54ac8eab794 100644 --- a/lib/l10n/sv.js +++ b/lib/l10n/sv.js @@ -35,8 +35,6 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n timme sedan","%n timmar sedan"], "_%n minute ago_::_%n minutes ago_" : ["%n minut sedan","%n minuter sedan"], "seconds ago" : "sekunder sedan", - "Database Error" : "Databasfel", - "Please contact your system administrator." : "Vänligen kontakta din systemadmiistratör", "web services under your control" : "webbtjänster under din kontroll", "App directory already exists" : "Appens mapp finns redan", "Can't create app folder. Please fix permissions. %s" : "Kan inte skapa appens mapp. Var god åtgärda rättigheterna. %s", @@ -72,7 +70,6 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!", "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.", - "Please install the cURL extension and restart your webserver." : "Vänligen installera tillägget cURL och starta om din webbserver.", "Set an admin username." : "Ange ett användarnamn för administratören.", "Set an admin password." : "Ange ett administratörslösenord.", "Can't create or write into the data directory %s" : "Kan inte skapa eller skriva till data-katalogen %s", diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json index 1fdc4457c6c..26cda92fbe8 100644 --- a/lib/l10n/sv.json +++ b/lib/l10n/sv.json @@ -33,8 +33,6 @@ "_%n hour ago_::_%n hours ago_" : ["%n timme sedan","%n timmar sedan"], "_%n minute ago_::_%n minutes ago_" : ["%n minut sedan","%n minuter sedan"], "seconds ago" : "sekunder sedan", - "Database Error" : "Databasfel", - "Please contact your system administrator." : "Vänligen kontakta din systemadmiistratör", "web services under your control" : "webbtjänster under din kontroll", "App directory already exists" : "Appens mapp finns redan", "Can't create app folder. Please fix permissions. %s" : "Kan inte skapa appens mapp. Var god åtgärda rättigheterna. %s", @@ -70,7 +68,6 @@ "PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!", "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.", - "Please install the cURL extension and restart your webserver." : "Vänligen installera tillägget cURL och starta om din webbserver.", "Set an admin username." : "Ange ett användarnamn för administratören.", "Set an admin password." : "Ange ett administratörslösenord.", "Can't create or write into the data directory %s" : "Kan inte skapa eller skriva till data-katalogen %s", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index d2f9d6954e9..a54c5f49057 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -22,7 +22,7 @@ OC.L10N.register( "Users" : "Kullanıcılar", "Admin" : "Yönetici", "Recommended" : "Önerilen", - "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "ownCloud yazılımının bu sürümü ile uyumlu olmadığı için \"%s\" uygulaması kurulamaz.", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "ownCloud yazılımının bu sürümü ile uyumlu olmadığı için \"%s\" uygulaması kurulamaz.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu bağımlılıklar sağlanmadığı için yüklenemiyor: %s", "No app name specified" : "Uygulama adı belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", @@ -37,11 +37,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["","%n saat önce"], "_%n minute ago_::_%n minutes ago_" : ["","%n dakika önce"], "seconds ago" : "saniyeler önce", - "Database Error" : "Veritabanı Hatası", - "Please contact your system administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.", "web services under your control" : "denetiminizdeki web hizmetleri", "Empty filename is not allowed" : "Boş dasya adına izin verilmiyor", "Dot files are not allowed" : "Nokta dosyalarına izin verilmiyor", + "4-byte characters are not supported in file names" : "4 bayt karakterler dosya adlarında desteklenmez", + "File name is a reserved word" : "Bu dosya adı özel bir kullanıma aittir", + "File name contains at least one invalid character" : "Dosya adı en az bir geçersiz karakter içeriyor", + "File name is too long" : "Dosya adı çok uzun", "App directory already exists" : "Uygulama dizini zaten mevcut", "Can't create app folder. Please fix permissions. %s" : "Uygulama dizini oluşturulamıyor. Lütfen izinleri düzeltin. %s", "No source specified when installing app" : "Uygulama kurulurken bir kaynak belirtilmedi", @@ -78,8 +80,6 @@ OC.L10N.register( "For the best results, please consider using a GNU/Linux server instead." : "En iyi sonuçlar için GNU/Linux sunucusu kullanın.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Bu %s örneğinin 32-bit PHP ortamında çalıştırıldığı ve open_basedir ayarının php.ini içerisinde yapılandırıldığı görülüyor. Bu 4 GB üzerindeki dosyalarda sorun oluşturacaktır ve kullanılması önerilmez.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Lütfen php.ini içerisindeki open_basedir ayarını kaldırın veya 64-bit PHP'ye geçin.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Bu %s örneğinin 32-bit PHP ortamında çalıştırıldığı ve cURL'nin kurulu olmadığı görülüyor. Bu 4 GB üzerindeki dosyalarda sorun oluşturacaktır ve kullanılması önerilmez.", - "Please install the cURL extension and restart your webserver." : "Lütfen cURL eklentisini yükleyin ve web sunucusunu yeniden başlatın.", "Set an admin username." : "Bir yönetici kullanıcı adı ayarlayın.", "Set an admin password." : "Bir yönetici kullanıcı parolası ayarlayın.", "Can't create or write into the data directory %s" : "Veri dizini %s oluşturulamıyor veya yazılamıyor", @@ -101,6 +101,7 @@ OC.L10N.register( "Setting permissions for %s failed, because the item was not found" : "%s için izinler öge bulunamadığından ayarlanamadı", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamıyor. Paylaşımlar, paylaşıldıkları süreden %s sonra dolamaz.", "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Son kullanım tarihi temizlenemiyor. Paylaşımların bir son kullanma tarihi olmalı.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşma arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli", "Sharing backend %s not found" : "Paylaşım arka ucu %s bulunamadı", "Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 8866df391b9..c97b318b334 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -20,7 +20,7 @@ "Users" : "Kullanıcılar", "Admin" : "Yönetici", "Recommended" : "Önerilen", - "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "ownCloud yazılımının bu sürümü ile uyumlu olmadığı için \"%s\" uygulaması kurulamaz.", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "ownCloud yazılımının bu sürümü ile uyumlu olmadığı için \"%s\" uygulaması kurulamaz.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu bağımlılıklar sağlanmadığı için yüklenemiyor: %s", "No app name specified" : "Uygulama adı belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", @@ -35,11 +35,13 @@ "_%n hour ago_::_%n hours ago_" : ["","%n saat önce"], "_%n minute ago_::_%n minutes ago_" : ["","%n dakika önce"], "seconds ago" : "saniyeler önce", - "Database Error" : "Veritabanı Hatası", - "Please contact your system administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.", "web services under your control" : "denetiminizdeki web hizmetleri", "Empty filename is not allowed" : "Boş dasya adına izin verilmiyor", "Dot files are not allowed" : "Nokta dosyalarına izin verilmiyor", + "4-byte characters are not supported in file names" : "4 bayt karakterler dosya adlarında desteklenmez", + "File name is a reserved word" : "Bu dosya adı özel bir kullanıma aittir", + "File name contains at least one invalid character" : "Dosya adı en az bir geçersiz karakter içeriyor", + "File name is too long" : "Dosya adı çok uzun", "App directory already exists" : "Uygulama dizini zaten mevcut", "Can't create app folder. Please fix permissions. %s" : "Uygulama dizini oluşturulamıyor. Lütfen izinleri düzeltin. %s", "No source specified when installing app" : "Uygulama kurulurken bir kaynak belirtilmedi", @@ -76,8 +78,6 @@ "For the best results, please consider using a GNU/Linux server instead." : "En iyi sonuçlar için GNU/Linux sunucusu kullanın.", "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Bu %s örneğinin 32-bit PHP ortamında çalıştırıldığı ve open_basedir ayarının php.ini içerisinde yapılandırıldığı görülüyor. Bu 4 GB üzerindeki dosyalarda sorun oluşturacaktır ve kullanılması önerilmez.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Lütfen php.ini içerisindeki open_basedir ayarını kaldırın veya 64-bit PHP'ye geçin.", - "It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. This will lead to problems with files over 4 GB and is highly discouraged." : "Bu %s örneğinin 32-bit PHP ortamında çalıştırıldığı ve cURL'nin kurulu olmadığı görülüyor. Bu 4 GB üzerindeki dosyalarda sorun oluşturacaktır ve kullanılması önerilmez.", - "Please install the cURL extension and restart your webserver." : "Lütfen cURL eklentisini yükleyin ve web sunucusunu yeniden başlatın.", "Set an admin username." : "Bir yönetici kullanıcı adı ayarlayın.", "Set an admin password." : "Bir yönetici kullanıcı parolası ayarlayın.", "Can't create or write into the data directory %s" : "Veri dizini %s oluşturulamıyor veya yazılamıyor", @@ -99,6 +99,7 @@ "Setting permissions for %s failed, because the item was not found" : "%s için izinler öge bulunamadığından ayarlanamadı", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamıyor. Paylaşımlar, paylaşıldıkları süreden %s sonra dolamaz.", "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Son kullanım tarihi temizlenemiyor. Paylaşımların bir son kullanma tarihi olmalı.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşma arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli", "Sharing backend %s not found" : "Paylaşım arka ucu %s bulunamadı", "Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı", diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index 25526730e49..2d830eb0d85 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -8,27 +8,42 @@ OC.L10N.register( "Sample configuration detected" : "Виявлено приклад конфігурації", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Була виявлена конфігурація з прикладу. Це може нашкодити вашій системі та не підтримується. Будь ласка, зверніться до документації перед внесенням змін в файл config.php", "PHP %s or higher is required." : "Необхідно PHP %s або вище", + "PHP with a version lower than %s is required." : "Потрібна версія PHP нижче %s ", + "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s", + "The command line tool %s could not be found" : "Утиліту командного рядка %s не знайдено", + "The library %s is not available." : "Бібліотека %s недоступна.", + "Library %s with a version higher than %s is required - available version %s." : "Потрібна бібліотека %s версії не більше %s, встановлена версія %s.", + "Library %s with a version lower than %s is required - available version %s." : "Потрібна бібліотека %s версії менш ніж %s, встановлена версія %s.", + "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s", + "ownCloud %s or higher is required." : "Потрібен ownCloud %s або вище.", + "ownCloud with a version lower than %s is required." : "Потрібна версія ownCloud нижче %s.", "Help" : "Допомога", "Personal" : "Особисте", "Users" : "Користувачі", "Admin" : "Адмін", "Recommended" : "Рекомендуємо", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Додаток \"%s\" не може бути встановлено, так як він не сумісний з цією версією ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Додаток \"%s\" не може бути встановлений, так як наступні залежності не виконано: %s", "No app name specified" : "Не вказано ім'я додатку", "Unknown filetype" : "Невідомий тип файлу", "Invalid image" : "Невірне зображення", "today" : "сьогодні", "yesterday" : "вчора", - "_%n day ago_::_%n days ago_" : ["","",""], + "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому"], "last month" : "минулого місяця", "_%n month ago_::_%n months ago_" : ["","","%n місяців тому"], "last year" : "минулого року", - "_%n year ago_::_%n years ago_" : ["","",""], + "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому"], "_%n hour ago_::_%n hours ago_" : ["","","%n годин тому"], "_%n minute ago_::_%n minutes ago_" : ["","","%n хвилин тому"], "seconds ago" : "секунди тому", - "Database Error" : "Помилка бази даних", - "Please contact your system administrator." : "Будь ласка, зверніться до системного адміністратора.", "web services under your control" : "підконтрольні Вам веб-сервіси", + "Empty filename is not allowed" : "Порожні імена файлів не допускаються", + "Dot files are not allowed" : "Файли які починаються з крапки не допустимі", + "4-byte characters are not supported in file names" : "4-х байтові символи в імені файлів не допустимі", + "File name is a reserved word" : "Ім’я файлу є зарезервованим словом", + "File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ", + "File name is too long" : "Ім’я файлу занадто довге", "App directory already exists" : "Тека додатку вже існує", "Can't create app folder. Please fix permissions. %s" : "Неможливо створити теку додатку. Будь ласка, виправте права доступу. %s", "No source specified when installing app" : "Не вказано джерело при встановлені додатку", @@ -63,12 +78,13 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "PostgreSQL ім'я користувача та/або пароль не дійсні", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, видаліть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.", - "Please install the cURL extension and restart your webserver." : "Будь ласка, встановіть cURL розширення і перезапустіть ваш веб-сервер.", "Set an admin username." : "Встановіть ім'я адміністратора.", "Set an admin password." : "Встановіть пароль адміністратора.", "Can't create or write into the data directory %s" : "Неможливо створити або записати каталог даних %s", "%s shared »%s« with you" : "%s розподілено »%s« з тобою", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i", "Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує", "You are not allowed to share %s" : "Вам заборонено поширювати %s", "Sharing %s failed, because the user %s is the item owner" : "Не вдалося поділитися з %s, оскільки %s вже є володарем", @@ -79,17 +95,54 @@ OC.L10N.register( "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" : "Вам необхідно задати пароль для створення публічного посилання. Дозволені лише захищені посилання", "Sharing %s failed, because sharing with links is not allowed" : "Не вдалося поділитися %s, оскільки публічний доступ через посилання заборонений", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не вдалося поділитися %s, не вдалося знайти %s, можливо, сервер не доступний.", + "Share type %s is not valid for %s" : "Тип загального доступу %s неприпустимий для %s", + "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося налаштувати права доступу для %s, зазначені права доступу перевищують надані для %s", + "Setting permissions for %s failed, because the item was not found" : "Не вдалося налаштувати права доступу для %s, елемент не знайдений.", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.", + "Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Неможливо очистити дату закінчення. Загальні ресурси повинні мати термін придатності.", + "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Backend загального доступу %s повинен реалізовувати інтерфейс OCP\\Share_Backend", + "Sharing backend %s not found" : "Backend загального доступу %s не знайдено", + "Sharing backend for %s not found" : "Бекенд загального доступу для %s не знайдено", + "Sharing %s failed, because the user %s is the original sharer" : "Не вдалося поділитися %s, спочатку елементом поділився %s", + "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося поділитися %s, права перевищують надані права доступу %s", + "Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено", + "Sharing %s failed, because the sharing backend for %s could not find its source" : "Не вдалося поділитися %s, backend загального доступу не знайшов шлях до %s", + "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші.", "Could not find category \"%s\"" : "Не вдалося знайти категорію \"%s\"", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-\"" : "Тільки такі символи допускаються в імені користувача: \"az\", \"AZ\", \"0-9\", і \"_.@ -\"", "A valid username must be provided" : "Потрібно задати вірне ім'я користувача", "A valid password must be provided" : "Потрібно задати вірний пароль", "The username is already being used" : "Ім'я користувача вже використовується", "No database drivers (sqlite, mysql, or postgresql) installed." : "Не встановлено драйвер бази даних (sqlite, mysql, or postgresql).", "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Зазвичай це можна виправити, %s надавши веб-серверу права на запис в каталог додатків %s або відключивши сховище програм у файлі конфігурації.", + "Cannot create \"data\" directory (%s)" : "Неможливо створити каталог \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "Зазвичай це можна виправити, <a href=\"%s\" target=\"_blank\"> надавши веб-серверу права на запис в кореневому каталозі</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Зазвичай це можна виправити, %s надавши веб-серверу права на запис в кореневому каталозі %s.", + "Setting locale to %s failed" : "Установка локалі %s не вдалася", + "Please install one of these locales on your system and restart your webserver." : "Встановіть один із цих мовних пакетів в вашу систему і перезапустіть веб-сервер.", "Please ask your server administrator to install the module." : "Будь ласка, зверніться до адміністратора, щоб встановити модуль.", "PHP module %s not installed." : "%s модуль PHP не встановлено.", + "PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не встановлено в \"%s\".", + "Adjusting this setting in php.ini will make ownCloud run again" : "Установка цього параметру в php.ini дозволяє запуститися ownCloud знову.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Будь ласка, зверніться до адміністратора серверу, щоб оновити PHP до останньої версії. Встановлена версія PHP більше не підтримується ownCloud і співтовариством PHP.", + "PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code." : "У PHP включена директива \"always_populate_raw_post_data\". PHP версії 5.6 і вище, при включеній директиві, додає повідомлення в журнал навіть для абсолютно робочого коду.", + "To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini" : "Щоб виправити цю помилку, вкажіть значення <code> -1 </ code> як значення параметра <code> always_populate_raw_post_data </ code> у вашому php.ini", "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.", - "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер." + "PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?", + "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", + "PostgreSQL >= 9 required" : "Потрібно PostgreSQL> = 9", + "Please upgrade your database version" : "Оновіть версію бази даних", + "Error occurred while checking PostgreSQL version" : "Сталася помилка при перевірці версії PostgreSQL", + "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Переконайтеся що версія PostgreSQL> = 9 або перевірте журнали для отримання додаткової інформацією про помилку", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Змініть права доступу на 0770, щоб інші користувачі не могли отримати список файлів цього каталогу.", + "Data directory (%s) is readable by other users" : "Каталог даних (%s) доступний для читання іншим користувачам", + "Data directory (%s) is invalid" : "Каталог даних (%s) невірний", + "Please check that the data directory contains a file \".ocdata\" in its root." : "Переконайтеся, що файл \".ocdata\" присутній у корені каталогу даних.", + "Could not obtain lock type %d on \"%s\"." : "Не вдалося отримати блокування типу %d для \"%s\"" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index 928dc116ef4..8bb598eb219 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -6,27 +6,42 @@ "Sample configuration detected" : "Виявлено приклад конфігурації", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Була виявлена конфігурація з прикладу. Це може нашкодити вашій системі та не підтримується. Будь ласка, зверніться до документації перед внесенням змін в файл config.php", "PHP %s or higher is required." : "Необхідно PHP %s або вище", + "PHP with a version lower than %s is required." : "Потрібна версія PHP нижче %s ", + "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s", + "The command line tool %s could not be found" : "Утиліту командного рядка %s не знайдено", + "The library %s is not available." : "Бібліотека %s недоступна.", + "Library %s with a version higher than %s is required - available version %s." : "Потрібна бібліотека %s версії не більше %s, встановлена версія %s.", + "Library %s with a version lower than %s is required - available version %s." : "Потрібна бібліотека %s версії менш ніж %s, встановлена версія %s.", + "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s", + "ownCloud %s or higher is required." : "Потрібен ownCloud %s або вище.", + "ownCloud with a version lower than %s is required." : "Потрібна версія ownCloud нижче %s.", "Help" : "Допомога", "Personal" : "Особисте", "Users" : "Користувачі", "Admin" : "Адмін", "Recommended" : "Рекомендуємо", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Додаток \"%s\" не може бути встановлено, так як він не сумісний з цією версією ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Додаток \"%s\" не може бути встановлений, так як наступні залежності не виконано: %s", "No app name specified" : "Не вказано ім'я додатку", "Unknown filetype" : "Невідомий тип файлу", "Invalid image" : "Невірне зображення", "today" : "сьогодні", "yesterday" : "вчора", - "_%n day ago_::_%n days ago_" : ["","",""], + "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому"], "last month" : "минулого місяця", "_%n month ago_::_%n months ago_" : ["","","%n місяців тому"], "last year" : "минулого року", - "_%n year ago_::_%n years ago_" : ["","",""], + "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому"], "_%n hour ago_::_%n hours ago_" : ["","","%n годин тому"], "_%n minute ago_::_%n minutes ago_" : ["","","%n хвилин тому"], "seconds ago" : "секунди тому", - "Database Error" : "Помилка бази даних", - "Please contact your system administrator." : "Будь ласка, зверніться до системного адміністратора.", "web services under your control" : "підконтрольні Вам веб-сервіси", + "Empty filename is not allowed" : "Порожні імена файлів не допускаються", + "Dot files are not allowed" : "Файли які починаються з крапки не допустимі", + "4-byte characters are not supported in file names" : "4-х байтові символи в імені файлів не допустимі", + "File name is a reserved word" : "Ім’я файлу є зарезервованим словом", + "File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ", + "File name is too long" : "Ім’я файлу занадто довге", "App directory already exists" : "Тека додатку вже існує", "Can't create app folder. Please fix permissions. %s" : "Неможливо створити теку додатку. Будь ласка, виправте права доступу. %s", "No source specified when installing app" : "Не вказано джерело при встановлені додатку", @@ -61,12 +76,13 @@ "PostgreSQL username and/or password not valid" : "PostgreSQL ім'я користувача та/або пароль не дійсні", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, видаліть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.", - "Please install the cURL extension and restart your webserver." : "Будь ласка, встановіть cURL розширення і перезапустіть ваш веб-сервер.", "Set an admin username." : "Встановіть ім'я адміністратора.", "Set an admin password." : "Встановіть пароль адміністратора.", "Can't create or write into the data directory %s" : "Неможливо створити або записати каталог даних %s", "%s shared »%s« with you" : "%s розподілено »%s« з тобою", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i", "Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує", "You are not allowed to share %s" : "Вам заборонено поширювати %s", "Sharing %s failed, because the user %s is the item owner" : "Не вдалося поділитися з %s, оскільки %s вже є володарем", @@ -77,17 +93,54 @@ "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" : "Вам необхідно задати пароль для створення публічного посилання. Дозволені лише захищені посилання", "Sharing %s failed, because sharing with links is not allowed" : "Не вдалося поділитися %s, оскільки публічний доступ через посилання заборонений", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не вдалося поділитися %s, не вдалося знайти %s, можливо, сервер не доступний.", + "Share type %s is not valid for %s" : "Тип загального доступу %s неприпустимий для %s", + "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося налаштувати права доступу для %s, зазначені права доступу перевищують надані для %s", + "Setting permissions for %s failed, because the item was not found" : "Не вдалося налаштувати права доступу для %s, елемент не знайдений.", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.", + "Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Неможливо очистити дату закінчення. Загальні ресурси повинні мати термін придатності.", + "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Backend загального доступу %s повинен реалізовувати інтерфейс OCP\\Share_Backend", + "Sharing backend %s not found" : "Backend загального доступу %s не знайдено", + "Sharing backend for %s not found" : "Бекенд загального доступу для %s не знайдено", + "Sharing %s failed, because the user %s is the original sharer" : "Не вдалося поділитися %s, спочатку елементом поділився %s", + "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Не вдалося поділитися %s, права перевищують надані права доступу %s", + "Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено", + "Sharing %s failed, because the sharing backend for %s could not find its source" : "Не вдалося поділитися %s, backend загального доступу не знайшов шлях до %s", + "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші.", "Could not find category \"%s\"" : "Не вдалося знайти категорію \"%s\"", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-\"" : "Тільки такі символи допускаються в імені користувача: \"az\", \"AZ\", \"0-9\", і \"_.@ -\"", "A valid username must be provided" : "Потрібно задати вірне ім'я користувача", "A valid password must be provided" : "Потрібно задати вірний пароль", "The username is already being used" : "Ім'я користувача вже використовується", "No database drivers (sqlite, mysql, or postgresql) installed." : "Не встановлено драйвер бази даних (sqlite, mysql, or postgresql).", "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Зазвичай це можна виправити, %s надавши веб-серверу права на запис в каталог додатків %s або відключивши сховище програм у файлі конфігурації.", + "Cannot create \"data\" directory (%s)" : "Неможливо створити каталог \"data\" (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "Зазвичай це можна виправити, <a href=\"%s\" target=\"_blank\"> надавши веб-серверу права на запис в кореневому каталозі</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Зазвичай це можна виправити, %s надавши веб-серверу права на запис в кореневому каталозі %s.", + "Setting locale to %s failed" : "Установка локалі %s не вдалася", + "Please install one of these locales on your system and restart your webserver." : "Встановіть один із цих мовних пакетів в вашу систему і перезапустіть веб-сервер.", "Please ask your server administrator to install the module." : "Будь ласка, зверніться до адміністратора, щоб встановити модуль.", "PHP module %s not installed." : "%s модуль PHP не встановлено.", + "PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не встановлено в \"%s\".", + "Adjusting this setting in php.ini will make ownCloud run again" : "Установка цього параметру в php.ini дозволяє запуститися ownCloud знову.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Будь ласка, зверніться до адміністратора серверу, щоб оновити PHP до останньої версії. Встановлена версія PHP більше не підтримується ownCloud і співтовариством PHP.", + "PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code." : "У PHP включена директива \"always_populate_raw_post_data\". PHP версії 5.6 і вище, при включеній директиві, додає повідомлення в журнал навіть для абсолютно робочого коду.", + "To fix this issue set <code>always_populate_raw_post_data</code> to <code>-1</code> in your php.ini" : "Щоб виправити цю помилку, вкажіть значення <code> -1 </ code> як значення параметра <code> always_populate_raw_post_data </ code> у вашому php.ini", "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.", - "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер." + "PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?", + "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", + "PostgreSQL >= 9 required" : "Потрібно PostgreSQL> = 9", + "Please upgrade your database version" : "Оновіть версію бази даних", + "Error occurred while checking PostgreSQL version" : "Сталася помилка при перевірці версії PostgreSQL", + "Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error" : "Переконайтеся що версія PostgreSQL> = 9 або перевірте журнали для отримання додаткової інформацією про помилку", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Змініть права доступу на 0770, щоб інші користувачі не могли отримати список файлів цього каталогу.", + "Data directory (%s) is readable by other users" : "Каталог даних (%s) доступний для читання іншим користувачам", + "Data directory (%s) is invalid" : "Каталог даних (%s) невірний", + "Please check that the data directory contains a file \".ocdata\" in its root." : "Переконайтеся, що файл \".ocdata\" присутній у корені каталогу даних.", + "Could not obtain lock type %d on \"%s\"." : "Не вдалося отримати блокування типу %d для \"%s\"" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index 6bb7a875877..11d1a36f8f6 100644 --- a/lib/l10n/zh_CN.js +++ b/lib/l10n/zh_CN.js @@ -56,7 +56,6 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "PostgreSQL 数据库用户名和/或密码无效", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!", "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 GNU/Linux 服务器。", - "Please install the cURL extension and restart your webserver." : "请安装 cURL 扩展并重启网页服务器.", "Set an admin username." : "请设置一个管理员用户名。", "Set an admin password." : "请设置一个管理员密码。", "%s shared »%s« with you" : "%s 向您分享了 »%s«", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index ecc580a4689..e5d47c7cef8 100644 --- a/lib/l10n/zh_CN.json +++ b/lib/l10n/zh_CN.json @@ -54,7 +54,6 @@ "PostgreSQL username and/or password not valid" : "PostgreSQL 数据库用户名和/或密码无效", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!", "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 GNU/Linux 服务器。", - "Please install the cURL extension and restart your webserver." : "请安装 cURL 扩展并重启网页服务器.", "Set an admin username." : "请设置一个管理员用户名。", "Set an admin password." : "请设置一个管理员密码。", "%s shared »%s« with you" : "%s 向您分享了 »%s«", diff --git a/lib/private/allconfig.php b/lib/private/allconfig.php index 00defd920d7..8d4f13e5b9c 100644 --- a/lib/private/allconfig.php +++ b/lib/private/allconfig.php @@ -189,11 +189,18 @@ class AllConfig implements \OCP\IConfig { return; } - $data = array($value, $userId, $appName, $key); + $affectedRows = 0; if (!$exists && $preCondition === null) { - $sql = 'INSERT INTO `*PREFIX*preferences` (`configvalue`, `userid`, `appid`, `configkey`)'. - 'VALUES (?, ?, ?, ?)'; + $this->connection->insertIfNotExist('*PREFIX*preferences', [ + 'configvalue' => $value, + 'userid' => $userId, + 'appid' => $appName, + 'configkey' => $key, + ], ['configkey', 'userid', 'appid']); + $affectedRows = 1; } elseif ($exists) { + $data = array($value, $userId, $appName, $key); + $sql = 'UPDATE `*PREFIX*preferences` SET `configvalue` = ? '. 'WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? '; @@ -206,8 +213,8 @@ class AllConfig implements \OCP\IConfig { } $data[] = $preCondition; } + $affectedRows = $this->connection->executeUpdate($sql, $data); } - $affectedRows = $this->connection->executeUpdate($sql, $data); // only add to the cache if we already loaded data for the user if ($affectedRows > 0 && isset($this->userCache[$userId])) { diff --git a/lib/private/app.php b/lib/private/app.php index 29bcf153464..1b004154173 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -61,7 +61,7 @@ class OC_App { * @return bool * * This function walks through the ownCloud directory and loads all apps - * it can find. A directory contains an app if the file /appinfo/app.php + * it can find. A directory contains an app if the file /appinfo/info.xml * exists. * * if $types is set, only apps of those types will be loaded @@ -326,29 +326,6 @@ class OC_App { } /** - * adds an entry to the navigation - * - * @param array $data array containing the data - * @return bool - * - * This function adds a new entry to the navigation visible to users. $data - * is an associative array. - * The following keys are required: - * - id: unique id for this entry ('addressbook_index') - * - href: link to the page - * - name: Human readable name ('Addressbook') - * - * The following keys are optional: - * - icon: path to the icon of the app - * - order: integer, that influences the position of your application in - * the navigation. Lower values come first. - */ - public static function addNavigationEntry($data) { - OC::$server->getNavigationManager()->add($data); - return true; - } - - /** * marks a navigation entry as active * * @param string $id id of the entry @@ -357,6 +334,8 @@ class OC_App { * This function sets a navigation entry as active and removes the 'active' * property from all other entries. The templates can use this for * highlighting the current position of the user. + * + * @deprecated Use \OC::$server->getNavigationManager()->setActiveEntry() instead */ public static function setActiveNavigationEntry($id) { OC::$server->getNavigationManager()->setActiveEntry($id); @@ -387,6 +366,8 @@ class OC_App { * * This function returns the id of the active navigation entry (set by * setActiveNavigationEntry + * + * @deprecated Use \OC::$server->getNavigationManager()->getActiveEntry() instead */ public static function getActiveNavigationEntry() { return OC::$server->getNavigationManager()->getActiveEntry(); @@ -758,7 +739,7 @@ class OC_App { if (is_resource($dh)) { while (($file = readdir($dh)) !== false) { - if ($file[0] != '.' and is_file($apps_dir['path'] . '/' . $file . '/appinfo/app.php')) { + if ($file[0] != '.' and is_file($apps_dir['path'] . '/' . $file . '/appinfo/info.xml')) { $apps[] = $file; @@ -907,7 +888,7 @@ class OC_App { /** * get a list of all apps on apps.owncloud.com - * + * * @return array|false multi-dimensional array of apps. * Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description */ diff --git a/lib/private/appframework/db/db.php b/lib/private/appframework/db/db.php index 5387e36d627..a9c6fc1e9c7 100644 --- a/lib/private/appframework/db/db.php +++ b/lib/private/appframework/db/db.php @@ -121,25 +121,18 @@ class Db implements IDb { } /** - * Insert a row if a matching row doesn't exists. - * @param string $table The table name (will replace *PREFIX*) to perform the replace on. - * @param array $input - * @throws \OC\HintException - * - * The input array if in the form: - * - * array ( 'id' => array ( 'value' => 6, - * 'key' => true - * ), - * 'name' => array ('value' => 'Stoyan'), - * 'family' => array ('value' => 'Stefanov'), - * 'birth_date' => array ('value' => '1975-06-20') - * ); - * @return bool - * - */ - public function insertIfNotExist($table, $input) { - return $this->connection->insertIfNotExist($table, $input); + * Insert a row if the matching row does not exists. + * + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * Please note: text fields (clob) must not be used in the compare array + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException + */ + public function insertIfNotExist($table, $input, array $compare = null) { + return $this->connection->insertIfNotExist($table, $input, $compare); } /** diff --git a/lib/private/arrayparser.php b/lib/private/arrayparser.php index 1cf3355d6fa..f513d90fdcf 100644 --- a/lib/private/arrayparser.php +++ b/lib/private/arrayparser.php @@ -21,6 +21,11 @@ namespace OC; +/** + * Class ArrayParser + * + * @package OC + */ class ArrayParser { const TYPE_NUM = 1; const TYPE_BOOL = 2; @@ -31,7 +36,7 @@ class ArrayParser { * @param string $string * @return array|bool|int|null|string */ - function parsePHP($string) { + public function parsePHP($string) { $string = $this->stripPHPTags($string); $string = $this->stripAssignAndReturn($string); return $this->parse($string); @@ -41,7 +46,7 @@ class ArrayParser { * @param string $string * @return string */ - function stripPHPTags($string) { + private function stripPHPTags($string) { $string = trim($string); if (substr($string, 0, 5) === '<?php') { $string = substr($string, 5); @@ -56,7 +61,7 @@ class ArrayParser { * @param string $string * @return string */ - function stripAssignAndReturn($string) { + private function stripAssignAndReturn($string) { $string = trim($string); if (substr($string, 0, 6) === 'return') { $string = substr($string, 6); @@ -71,7 +76,7 @@ class ArrayParser { * @param string $string * @return array|bool|int|null|string */ - function parse($string) { + private function parse($string) { $string = trim($string); $string = trim($string, ';'); switch ($this->getType($string)) { @@ -91,7 +96,7 @@ class ArrayParser { * @param string $string * @return int */ - function getType($string) { + private function getType($string) { $string = strtolower($string); $first = substr($string, 0, 1); $last = substr($string, -1, 1); @@ -111,7 +116,7 @@ class ArrayParser { * @param string $string * @return string */ - function parseString($string) { + private function parseString($string) { return substr($string, 1, -1); } @@ -119,7 +124,7 @@ class ArrayParser { * @param string $string * @return int */ - function parseNum($string) { + private function parseNum($string) { return intval($string); } @@ -127,7 +132,7 @@ class ArrayParser { * @param string $string * @return bool */ - function parseBool($string) { + private function parseBool($string) { $string = strtolower($string); return $string === 'true'; } @@ -136,12 +141,12 @@ class ArrayParser { * @param string $string * @return array */ - function parseArray($string) { + private function parseArray($string) { $body = substr($string, 5); $body = trim($body); $body = substr($body, 1, -1); $items = $this->splitArray($body); - $result = array(); + $result = []; $lastKey = -1; foreach ($items as $item) { $item = trim($item); @@ -167,15 +172,16 @@ class ArrayParser { /** * @param string $body * @return array + * @throws \UnexpectedValueException */ - function splitArray($body) { - $inSingleQuote = false;//keep track if we are inside quotes + private function splitArray($body) { + $inSingleQuote = false; //keep track if we are inside quotes $inDoubleQuote = false; - $bracketDepth = 0;//keep track if we are inside brackets - $parts = array(); + $bracketDepth = 0; //keep track if we are inside brackets + $parts = []; $start = 0; - $escaped = false;//keep track if we are after an escape character - $skips = array();//keep track of the escape characters we need to remove from the result + $escaped = false; //keep track if we are after an escape character + $skips = []; //keep track of the escape characters we need to remove from the result if (substr($body, -1, 1) !== ',') { $body .= ','; } @@ -206,7 +212,7 @@ class ArrayParser { $bracketDepth++; } elseif ($char === ')') { if ($bracketDepth <= 0) { - throw new UnexpectedValueException(); + throw new \UnexpectedValueException(); } else { $bracketDepth--; } @@ -217,7 +223,7 @@ class ArrayParser { } $parts[] = $part; $start = $i + 1; - $skips = array(); + $skips = []; } } $escaped = false; diff --git a/lib/private/avatar.php b/lib/private/avatar.php index 23b3c82771a..da9c84d84a4 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -29,7 +29,7 @@ class Avatar implements \OCP\IAvatar { /** * get the users avatar * @param int $size 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 + * @return boolean|\OCP\IImage containing the avatar or false if there's no image */ public function get ($size = 64) { if ($this->view->file_exists('avatar.jpg')) { @@ -57,14 +57,14 @@ class Avatar implements \OCP\IAvatar { /** * sets the users avatar - * @param \OC_Image|resource|string $data OC_Image, imagedata or path to set a new avatar + * @param \OCP\IImage|resource|string $data An image object, 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 \OC\NotSquareException if the image is not square * @return void */ public function set ($data) { - if($data instanceOf OC_Image) { + if($data instanceOf \OCP\IImage) { $img = $data; $data = $img->data(); } else { diff --git a/lib/private/cache/fileglobalgc.php b/lib/private/cache/fileglobalgc.php index 039992718ab..b07e886f652 100644 --- a/lib/private/cache/fileglobalgc.php +++ b/lib/private/cache/fileglobalgc.php @@ -6,6 +6,9 @@ use OC\BackgroundJob\Job; use OCP\IConfig; class FileGlobalGC extends Job { + // only do cleanup every 5 minutes + const CLEANUP_TTL_SEC = 300; + public function run($argument) { $this->gc(\OC::$server->getConfig(), $this->getCacheDir()); } @@ -39,8 +42,7 @@ class FileGlobalGC extends Job { public function gc(IConfig $config, $cacheDir) { $lastRun = $config->getAppValue('core', 'global_cache_gc_lastrun', 0); $now = time(); - if (($now - $lastRun) < 300) { - // only do cleanup every 5 minutes + if (($now - $lastRun) < self::CLEANUP_TTL_SEC) { return; } $config->setAppValue('core', 'global_cache_gc_lastrun', $now); @@ -48,6 +50,8 @@ class FileGlobalGC extends Job { return; } $paths = $this->getExpiredPaths($cacheDir, $now); - array_walk($paths, 'unlink'); + array_walk($paths, function($file) { + unlink($file); + }); } } diff --git a/lib/private/command/queuebus.php b/lib/private/command/queuebus.php new file mode 100644 index 00000000000..29c769e0107 --- /dev/null +++ b/lib/private/command/queuebus.php @@ -0,0 +1,53 @@ +<?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. + */ + +namespace OC\Command; + +use OCP\Command\IBus; +use OCP\Command\ICommand; + +class QueueBus implements IBus { + /** + * @var (ICommand|callable)[] + */ + private $queue; + + /** + * Schedule a command to be fired + * + * @param \OCP\Command\ICommand | callable $command + */ + public function push($command) { + $this->queue[] = $command; + } + + /** + * Require all commands using a trait to be run synchronous + * + * @param string $trait + */ + public function requireSync($trait) { + } + + /** + * @param \OCP\Command\ICommand | callable $command + */ + private function runCommand($command) { + if ($command instanceof ICommand) { + $command->handle(); + } else { + $command(); + } + } + + public function run() { + while ($command = array_shift($this->queue)) { + $this->runCommand($command); + } + } +} diff --git a/lib/private/connector/sabre/custompropertiesbackend.php b/lib/private/connector/sabre/custompropertiesbackend.php index 76ac8b84ef9..6827cb9ae0d 100644 --- a/lib/private/connector/sabre/custompropertiesbackend.php +++ b/lib/private/connector/sabre/custompropertiesbackend.php @@ -29,6 +29,7 @@ use Sabre\DAV\PropertyStorage\Backend\BackendInterface; use Sabre\DAV\PropFind; use Sabre\DAV\PropPatch; use Sabre\DAV\Tree; +use Sabre\DAV\Exception\NotFound; class CustomPropertiesBackend implements BackendInterface { @@ -94,8 +95,19 @@ class CustomPropertiesBackend implements BackendInterface { * @return void */ public function propFind($path, PropFind $propFind) { - $node = $this->tree->getNodeForPath($path); - if (!($node instanceof Node)) { + try { + $node = $this->tree->getNodeForPath($path); + if (!($node instanceof Node)) { + return; + } + } catch (NotFound $e) { + // in some rare (buggy) cases the node might not be found, + // we catch the exception to prevent breaking the whole list with a 404 + // (soft fail) + \OC::$server->getLogger()->warning( + 'Could not get node for path: \"' . $path . '\" : ' . $e->getMessage(), + array('app' => 'files') + ); return; } diff --git a/lib/private/db.php b/lib/private/db.php index dc25092e276..c2654926696 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -20,8 +20,6 @@ * */ -define('MDB2_SCHEMA_DUMP_STRUCTURE', '1'); - /** * This class manages the access to the database. It basically is a wrapper for * Doctrine with some adaptions. @@ -40,8 +38,7 @@ class OC_DB { * * @return \OC\DB\MDB2SchemaManager */ - private static function getMDB2SchemaManager() - { + private static function getMDB2SchemaManager() { return new \OC\DB\MDB2SchemaManager(\OC::$server->getDatabaseConnection()); } @@ -167,16 +164,6 @@ class OC_DB { } /** - * Insert a row if a matching row doesn't exists. - * @param string $table The table to insert into in the form '*PREFIX*tableName' - * @param array $input An array of fieldname/value pairs - * @return boolean number of updated rows - */ - public static function insertIfNotExist($table, $input) { - return \OC::$server->getDatabaseConnection()->insertIfNotExist($table, $input); - } - - /** * Start a transaction */ public static function beginTransaction() { @@ -205,7 +192,7 @@ class OC_DB { * * TODO: write more documentation */ - public static function getDbStructure( $file, $mode = 0) { + public static function getDbStructure($file) { $schemaManager = self::getMDB2SchemaManager(); return $schemaManager->getDbStructure($file); } diff --git a/lib/private/db/adapter.php b/lib/private/db/adapter.php index 58b3514b922..8c251c82075 100644 --- a/lib/private/db/adapter.php +++ b/lib/private/db/adapter.php @@ -40,44 +40,38 @@ class Adapter { } /** - * insert the @input values when they do not exist yet - * @param string $table name - * @param array $input key->value pair, key has to be sanitized properly - * @throws \OC\HintException - * @return int count of inserted rows + * Insert a row if the matching row does not exists. + * + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * Please note: text fields (clob) must not be used in the compare array + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException */ - public function insertIfNotExist($table, $input) { + public function insertIfNotExist($table, $input, array $compare = null) { + if (empty($compare)) { + $compare = array_keys($input); + } $query = 'INSERT INTO `' .$table . '` (`' . implode('`,`', array_keys($input)) . '`) SELECT ' . str_repeat('?,', count($input)-1).'? ' // Is there a prettier alternative? . 'FROM `' . $table . '` WHERE '; $inserts = array_values($input); - foreach($input as $key => $value) { + foreach($compare as $key) { $query .= '`' . $key . '`'; - if (is_null($value)) { + if (is_null($input[$key])) { $query .= ' IS NULL AND '; } else { - $inserts[] = $value; + $inserts[] = $input[$key]; $query .= ' = ? AND '; } } $query = substr($query, 0, strlen($query) - 5); $query .= ' HAVING COUNT(*) = 0'; - try { - return $this->conn->executeUpdate($query, $inserts); - } catch(\Doctrine\DBAL\DBALException $e) { - $entry = 'DB Error: "'.$e->getMessage() . '"<br />'; - $entry .= 'Offending command was: ' . $query.'<br />'; - \OC_Log::write('core', $entry, \OC_Log::FATAL); - $l = \OC::$server->getL10N('lib'); - throw new \OC\HintException( - $l->t('Database Error'), - $l->t('Please contact your system administrator.'), - 0, - $e - ); - } + return $this->conn->executeUpdate($query, $inserts); } } diff --git a/lib/private/db/adaptersqlite.php b/lib/private/db/adaptersqlite.php index df4a804feb1..a9106967333 100644 --- a/lib/private/db/adaptersqlite.php +++ b/lib/private/db/adaptersqlite.php @@ -18,38 +18,39 @@ class AdapterSqlite extends Adapter { return $statement; } - public function insertIfNotExist($table, $input) { + /** + * Insert a row if the matching row does not exists. + * + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * Please note: text fields (clob) must not be used in the compare array + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException + */ + public function insertIfNotExist($table, $input, array $compare = null) { + if (empty($compare)) { + $compare = array_keys($input); + } $fieldList = '`' . implode('`,`', array_keys($input)) . '`'; $query = "INSERT INTO `$table` ($fieldList) SELECT " . str_repeat('?,', count($input)-1).'? ' . " WHERE NOT EXISTS (SELECT 1 FROM `$table` WHERE "; $inserts = array_values($input); - foreach($input as $key => $value) { + foreach($compare as $key) { $query .= '`' . $key . '`'; - if (is_null($value)) { + if (is_null($input[$key])) { $query .= ' IS NULL AND '; } else { - $inserts[] = $value; + $inserts[] = $input[$key]; $query .= ' = ? AND '; } } $query = substr($query, 0, strlen($query) - 5); $query .= ')'; - try { - return $this->conn->executeUpdate($query, $inserts); - } catch(\Doctrine\DBAL\DBALException $e) { - $entry = 'DB Error: "'.$e->getMessage() . '"<br />'; - $entry .= 'Offending command was: ' . $query.'<br />'; - \OC_Log::write('core', $entry, \OC_Log::FATAL); - $l = \OC::$server->getL10N('lib'); - throw new \OC\HintException( - $l->t('Database Error'), - $l->t('Please contact your system administrator.'), - 0, - $e - ); - } + return $this->conn->executeUpdate($query, $inserts); } } diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php index 6ba29fc2ccf..dd1a9da6747 100644 --- a/lib/private/db/connection.php +++ b/lib/private/db/connection.php @@ -30,7 +30,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { return parent::connect(); } catch (DBALException $e) { // throw a new exception to prevent leaking info from the stacktrace - throw new DBALException($e->getMessage(), $e->getCode()); + throw new DBALException('Failed to connect to the database: ' . $e->getMessage(), $e->getCode()); } } @@ -152,20 +152,23 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { } // internal use - public function realLastInsertId($seqName = null) - { + public function realLastInsertId($seqName = null) { return parent::lastInsertId($seqName); } /** - * Insert a row if a matching row doesn't exists. - * @param string $table. The table to insert into in the form '*PREFIX*tableName' - * @param array $input. An array of fieldname/value pairs - * @throws \OC\HintException - * @return bool The return value from execute() + * Insert a row if the matching row does not exists. + * + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * Please note: text fields (clob) must not be used in the compare array + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException */ - public function insertIfNotExist($table, $input) { - return $this->adapter->insertIfNotExist($table, $input); + public function insertIfNotExist($table, $input, array $compare = null) { + return $this->adapter->insertIfNotExist($table, $input, $compare); } /** diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index 358360d0b46..66c97f9e3b4 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -35,7 +35,7 @@ class MDB2SchemaManager { * * TODO: write more documentation */ - public function getDbStructure($file, $mode = MDB2_SCHEMA_DUMP_STRUCTURE) { + public function getDbStructure($file) { return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $this->conn); } diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php index 62c32ce6593..670ac2ec524 100644 --- a/lib/private/files/cache/cache.php +++ b/lib/private/files/cache/cache.php @@ -214,6 +214,7 @@ class Cache { * @param array $data * * @return int file id + * @throws \RuntimeException */ public function put($file, array $data) { if (($id = $this->getId($file)) > -1) { @@ -244,18 +245,24 @@ class Cache { $queryParts[] = '`storage`'; $params[] = $this->getNumericStorageId(); - $params = array_map(function($item) { - return trim($item, "`"); - }, $params); $queryParts = array_map(function($item) { return trim($item, "`"); }, $queryParts); $values = array_combine($queryParts, $params); - if (\OC::$server->getDatabaseConnection()->insertIfNotExist('*PREFIX*filecache', $values)) { + if (\OC::$server->getDatabaseConnection()->insertIfNotExist('*PREFIX*filecache', $values, [ + 'storage', + 'path_hash', + ])) { return (int)\OC_DB::insertid('*PREFIX*filecache'); } - return $this->getId($file); + // The file was created in the mean time + if (($id = $this->getId($file)) > -1) { + $this->update($id, $data); + return $id; + } else { + throw new \RuntimeException('File entry exists when inserting and does not exist on select... go away'); + } } } diff --git a/lib/private/files/cache/storage.php b/lib/private/files/cache/storage.php index d7d57811a7d..9f2739bbedb 100644 --- a/lib/private/files/cache/storage.php +++ b/lib/private/files/cache/storage.php @@ -21,6 +21,7 @@ class Storage { /** * @param \OC\Files\Storage\Storage|string $storage + * @throws \RuntimeException */ public function __construct($storage) { if ($storage instanceof \OC\Files\Storage\Storage) { @@ -35,9 +36,17 @@ class Storage { if ($row = $result->fetchRow()) { $this->numericId = $row['numeric_id']; } else { - $sql = 'INSERT INTO `*PREFIX*storages` (`id`) VALUES(?)'; - \OC_DB::executeAudited($sql, array($this->storageId)); - $this->numericId = \OC_DB::insertid('*PREFIX*storages'); + $connection = \OC_DB::getConnection(); + if ($connection->insertIfNotExist('*PREFIX*storages', ['id' => $this->storageId])) { + $this->numericId = \OC_DB::insertid('*PREFIX*storages'); + } else { + $result = \OC_DB::executeAudited($sql, array($this->storageId)); + if ($row = $result->fetchRow()) { + $this->numericId = $row['numeric_id']; + } else { + throw new \RuntimeException('Storage exists when inserting and does not exist on select... go away'); + } + } } } diff --git a/lib/private/files/cache/watcher.php b/lib/private/files/cache/watcher.php index f4572895b09..22c3fb202c3 100644 --- a/lib/private/files/cache/watcher.php +++ b/lib/private/files/cache/watcher.php @@ -52,6 +52,13 @@ class Watcher { } /** + * @return int either \OC\Files\Cache\Watcher::CHECK_NEVER, \OC\Files\Cache\Watcher::CHECK_ONCE, \OC\Files\Cache\Watcher::CHECK_ALWAYS + */ + public function getPolicy() { + return $this->watchPolicy; + } + + /** * check $path for updates * * @param string $path diff --git a/lib/private/files/mount/mountpoint.php b/lib/private/files/mount/mountpoint.php index 85edb7cb570..a187f4db109 100644 --- a/lib/private/files/mount/mountpoint.php +++ b/lib/private/files/mount/mountpoint.php @@ -71,9 +71,10 @@ class MountPoint implements IMountPoint { } $mountpoint = $this->formatPath($mountpoint); + $this->mountPoint = $mountpoint; if ($storage instanceof Storage) { $this->class = get_class($storage); - $this->storage = $this->loader->wrap($mountpoint, $storage); + $this->storage = $this->loader->wrap($this, $storage); } else { // Update old classes to new namespace if (strpos($storage, 'OC_Filestorage_') !== false) { @@ -82,7 +83,6 @@ class MountPoint implements IMountPoint { $this->class = $storage; $this->arguments = $arguments; } - $this->mountPoint = $mountpoint; } /** @@ -113,7 +113,7 @@ class MountPoint implements IMountPoint { if (class_exists($this->class)) { try { - return $this->loader->getInstance($this->mountPoint, $this->class, $this->arguments); + return $this->loader->getInstance($this, $this->class, $this->arguments); } catch (\Exception $exception) { $this->invalidStorage = true; if ($this->mountPoint === '/') { @@ -195,7 +195,7 @@ class MountPoint implements IMountPoint { $storage = $this->getStorage(); // storage can be null if it couldn't be initialized if ($storage != null) { - $this->storage = $wrapper($this->mountPoint, $storage); + $this->storage = $wrapper($this->mountPoint, $storage, $this); } } @@ -209,4 +209,13 @@ class MountPoint implements IMountPoint { public function getOption($name, $default) { return isset($this->mountOptions[$name]) ? $this->mountOptions[$name] : $default; } + + /** + * Get all options for the mount + * + * @return array + */ + public function getOptions() { + return $this->mountOptions; + } } diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index 8549d5a1fad..11cf3405fd9 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -13,6 +13,7 @@ use OC\Files\Cache\Scanner; use OC\Files\Cache\Storage; use OC\Files\Filesystem; use OC\Files\Cache\Watcher; +use OCP\Files\FileNameTooLongException; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\Files\ReservedWordException; @@ -34,6 +35,8 @@ abstract class Common implements \OC\Files\Storage\Storage { protected $watcher; protected $storageCache; + protected $mountOptions = []; + /** * @var string[] */ @@ -329,7 +332,8 @@ abstract class Common implements \OC\Files\Storage\Storage { } if (!isset($this->watcher)) { $this->watcher = new Watcher($storage); - $this->watcher->setPolicy(\OC::$server->getConfig()->getSystemValue('filesystem_check_changes', Watcher::CHECK_ONCE)); + $globalPolicy = \OC::$server->getConfig()->getSystemValue('filesystem_check_changes', Watcher::CHECK_ONCE); + $this->watcher->setPolicy($this->getMountOption('filesystem_check_changes', $globalPolicy)); } return $this->watcher; } @@ -460,6 +464,10 @@ abstract class Common implements \OC\Files\Storage\Storage { * @inheritdoc */ public function verifyPath($path, $fileName) { + if (isset($fileName[255])) { + throw new FileNameTooLongException(); + } + // NOTE: $path will remain unverified for now if (\OC_Util::runningOnWindows()) { $this->verifyWindowsPath($fileName); @@ -507,9 +515,25 @@ abstract class Common implements \OC\Files\Storage\Storage { } } - $sanitizedFileName = filter_var($fileName, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); + $sanitizedFileName = filter_var($fileName, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW); if($sanitizedFileName !== $fileName) { throw new InvalidCharacterInPathException(); } } + + /** + * @param array $options + */ + public function setMountOptions(array $options) { + $this->mountOptions = $options; + } + + /** + * @param string $name + * @param mixed $default + * @return mixed + */ + public function getMountOption($name, $default = null) { + return isset($this->mountOptions[$name]) ? $this->mountOptions[$name] : $default; + } } diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 7ca18262115..e0f24e0532d 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -512,11 +512,7 @@ class DAV extends \OC\Files\Storage\Common { * check if curl is installed */ public static function checkDependencies() { - if (function_exists('curl_init')) { - return true; - } else { - return array('curl'); - } + return true; } /** {@inheritdoc} */ diff --git a/lib/private/files/storage/storagefactory.php b/lib/private/files/storage/storagefactory.php index fa6dea2537c..51972791290 100644 --- a/lib/private/files/storage/storagefactory.php +++ b/lib/private/files/storage/storagefactory.php @@ -8,6 +8,7 @@ namespace OC\Files\Storage; +use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage\IStorageFactory; class StorageFactory implements IStorageFactory { @@ -55,23 +56,23 @@ class StorageFactory implements IStorageFactory { /** * Create an instance of a storage and apply the registered storage wrappers * - * @param string|boolean $mountPoint + * @param \OCP\Files\Mount\IMountPoint $mountPoint * @param string $class * @param array $arguments * @return \OCP\Files\Storage */ - public function getInstance($mountPoint, $class, $arguments) { + public function getInstance(IMountPoint $mountPoint, $class, $arguments) { return $this->wrap($mountPoint, new $class($arguments)); } /** - * @param string|boolean $mountPoint + * @param \OCP\Files\Mount\IMountPoint $mountPoint * @param \OCP\Files\Storage $storage * @return \OCP\Files\Storage */ - public function wrap($mountPoint, $storage) { + public function wrap(IMountPoint $mountPoint, $storage) { foreach ($this->storageWrappers as $wrapper) { - $storage = $wrapper($mountPoint, $storage); + $storage = $wrapper($mountPoint->getMountPoint(), $storage, $mountPoint); } return $storage; } diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 8b448abeb89..c95e0545810 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -11,6 +11,7 @@ namespace OC\Files; use OC\Files\Cache\Updater; use OC\Files\Mount\MoveableMount; +use OCP\Files\FileNameTooLongException; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\Files\ReservedWordException; @@ -585,6 +586,8 @@ class View { ); } if ($run) { + $this->verifyPath(dirname($path2), basename($path2)); + $mp1 = $this->getMountPoint($path1 . $postFix1); $mp2 = $this->getMountPoint($path2 . $postFix2); $manager = Filesystem::getMountManager(); @@ -1130,7 +1133,7 @@ class View { } if ($mount instanceof MoveableMount && $internalPath === '') { - $data['permissions'] |= \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_UPDATE; + $data['permissions'] |= \OCP\Constants::PERMISSION_DELETE; } $data = \OC_FileProxy::runPostProxies('getFileInfo', $path, $data); @@ -1573,6 +1576,8 @@ class View { throw new InvalidPathException($l10n->t('File name is a reserved word')); } catch (InvalidCharacterInPathException $ex) { throw new InvalidPathException($l10n->t('File name contains at least one invalid character')); + } catch (FileNameTooLongException $ex) { + throw new InvalidPathException($l10n->t('File name is too long')); } } } diff --git a/lib/private/helper.php b/lib/private/helper.php index ebc30395a6b..0925c2367cd 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -39,6 +39,7 @@ class OC_Helper { 'application/coreldraw' => 'image', 'application/x-gimp' => 'image', 'application/x-photoshop' => 'image', + 'application/x-dcraw' => 'image', 'application/font-sfnt' => 'font', 'application/x-font' => 'font', diff --git a/lib/private/httphelper.php b/lib/private/httphelper.php index 08c35e4ae08..6bb8e1d3ec0 100644 --- a/lib/private/httphelper.php +++ b/lib/private/httphelper.php @@ -60,82 +60,68 @@ class HTTPHelper { $proxy = $this->config->getSystemValue('proxy', null); $proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null); - if (function_exists('curl_init')) { - $curl = curl_init(); - $max_redirects = 10; - - curl_setopt($curl, CURLOPT_HEADER, 0); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($curl, CURLOPT_URL, $url); - curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - - curl_setopt($curl, CURLOPT_USERAGENT, self::USER_AGENT); - if ($proxy !== null) { - curl_setopt($curl, CURLOPT_PROXY, $proxy); - } - if ($proxyUserPwd !== null) { - curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyUserPwd); - } + $curl = curl_init(); + $max_redirects = 10; + + curl_setopt($curl, CURLOPT_HEADER, 0); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + + curl_setopt($curl, CURLOPT_USERAGENT, self::USER_AGENT); + if ($proxy !== null) { + curl_setopt($curl, CURLOPT_PROXY, $proxy); + } + if ($proxyUserPwd !== null) { + curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyUserPwd); + } - if (ini_get('open_basedir') === '') { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($curl, CURLOPT_MAXREDIRS, $max_redirects); - $data = curl_exec($curl); - } else { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); - $mr = $max_redirects; - if ($mr > 0) { - $newURL = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); - $rcurl = curl_copy_handle($curl); - curl_setopt($rcurl, CURLOPT_HEADER, true); - curl_setopt($rcurl, CURLOPT_NOBODY, true); - curl_setopt($rcurl, CURLOPT_FORBID_REUSE, false); - curl_setopt($rcurl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($rcurl, CURLOPT_USERAGENT, self::USER_AGENT); - do { - curl_setopt($rcurl, CURLOPT_URL, $newURL); - $header = curl_exec($rcurl); - if (curl_errno($rcurl)) { - $code = 0; + if (ini_get('open_basedir') === '') { + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl, CURLOPT_MAXREDIRS, $max_redirects); + $data = curl_exec($curl); + } else { + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + $mr = $max_redirects; + if ($mr > 0) { + $newURL = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); + $rCurl = curl_copy_handle($curl); + curl_setopt($rCurl, CURLOPT_HEADER, true); + curl_setopt($rCurl, CURLOPT_NOBODY, true); + curl_setopt($rCurl, CURLOPT_FORBID_REUSE, false); + curl_setopt($rCurl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($rCurl, CURLOPT_USERAGENT, self::USER_AGENT); + do { + curl_setopt($rCurl, CURLOPT_URL, $newURL); + $header = curl_exec($rCurl); + if (curl_errno($rCurl)) { + $code = 0; + } else { + $code = curl_getinfo($rCurl, CURLINFO_HTTP_CODE); + if ($code == 301 || $code == 302) { + preg_match('/Location:(.*?)\n/', $header, $matches); + $newURL = trim(array_pop($matches)); } else { - $code = curl_getinfo($rcurl, CURLINFO_HTTP_CODE); - if ($code == 301 || $code == 302) { - preg_match('/Location:(.*?)\n/', $header, $matches); - $newURL = trim(array_pop($matches)); - } else { - $code = 0; - } + $code = 0; } - } while ($code && --$mr); - curl_close($rcurl); - if ($mr > 0) { - curl_setopt($curl, CURLOPT_URL, $newURL); } - } - - if ($mr == 0 && $max_redirects > 0) { - $data = false; - } else { - $data = curl_exec($curl); + } while ($code && --$mr); + curl_close($rCurl); + if ($mr > 0) { + curl_setopt($curl, CURLOPT_URL, $newURL); } } - curl_close($curl); - } else { - $url = $this->getFinalLocationOfURL($url); - $contextArray = $this->getDefaultContextArray(); - if ($proxy !== null) { - $contextArray['http']['proxy'] = $proxy; + if ($mr == 0 && $max_redirects > 0) { + $data = false; + } else { + $data = curl_exec($curl); } - - $ctx = stream_context_create( - $contextArray - ); - $data = @file_get_contents($url, 0, $ctx); - } + curl_close($curl); + return $data; } @@ -159,29 +145,6 @@ class HTTPHelper { } /** - * Returns the last HTTP or HTTPS site the request has been redirected too using the Location HTTP header - * This is a very ugly workaround about the missing functionality to restrict fopen() to protocols - * @param string $location Needs to be a HTTPS or HTTP URL - * @throws \Exception In case the initial URL is not a HTTP or HTTPS one - * @return string - */ - public function getFinalLocationOfURL($location) { - if(!$this->isHTTPURL($location)) { - throw new \Exception('URL must begin with HTTPS or HTTP.'); - } - $headerArray = $this->getHeaders($location, 1); - - if($headerArray !== false && isset($headerArray['Location'])) { - while($this->isHTTPURL($headerArray['Location'])) { - $location = $headerArray['Location']; - $headerArray = $this->getHeaders($location); - } - } - - return $location; - } - - /** * create string of parameters for post request * * @param array $parameters diff --git a/lib/private/image.php b/lib/private/image.php index 317b6fde160..c8509c61286 100644 --- a/lib/private/image.php +++ b/lib/private/image.php @@ -15,7 +15,7 @@ /** * Class for basic image manipulation */ -class OC_Image { +class OC_Image implements \OCP\IImage { protected $resource = false; // tmp resource. protected $imageType = IMAGETYPE_PNG; // Default to png if file type isn't evident. protected $mimeType = "image/png"; // Default to png @@ -283,9 +283,12 @@ class OC_Image { } /** - * @return string Returns the raw image data. + * @return null|string Returns the raw image data. */ - function data() { + public function data() { + if (!$this->valid()) { + return null; + } ob_start(); switch ($this->mimeType) { case "image/png": @@ -946,6 +949,9 @@ class OC_Image { return true; } + /** + * Destroys the current image and resets the object + */ public function destroy() { if ($this->valid()) { imagedestroy($this->resource); diff --git a/lib/private/largefilehelper.php b/lib/private/largefilehelper.php index b6a8c536e9b..a5a8f302eab 100644 --- a/lib/private/largefilehelper.php +++ b/lib/private/largefilehelper.php @@ -94,15 +94,15 @@ class LargeFileHelper { /** * @brief Tries to get the size of a file via a CURL HEAD request. * - * @param string $filename Path to the file. + * @param string $fileName Path to the file. * * @return null|int|float Number of bytes as number (float or int) or * null on failure. */ - public function getFileSizeViaCurl($filename) { - if (function_exists('curl_init') && \OC::$server->getIniWrapper()->getString('open_basedir') === '') { - $fencoded = rawurlencode($filename); - $ch = curl_init("file://$fencoded"); + public function getFileSizeViaCurl($fileName) { + if (\OC::$server->getIniWrapper()->getString('open_basedir') === '') { + $encodedFileName = rawurlencode($fileName); + $ch = curl_init("file://$encodedFileName"); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); @@ -129,8 +129,8 @@ class LargeFileHelper { */ public function getFileSizeViaCOM($filename) { if (class_exists('COM')) { - $fsobj = new \COM("Scripting.FileSystemObject"); - $file = $fsobj->GetFile($filename); + $fsObj = new \COM("Scripting.FileSystemObject"); + $file = $fsObj->GetFile($filename); return 0 + $file->Size; } return null; diff --git a/lib/private/mail.php b/lib/private/mail.php deleted file mode 100644 index 6b7eec6e080..00000000000 --- a/lib/private/mail.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php -/** - * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -/** - * OC_Mail - * - * A class to handle mail sending. - */ - -class OC_Mail { - - /** - * send an email - * - * @param string $toaddress - * @param string $toname - * @param string $subject - * @param string $mailtext - * @param string $fromaddress - * @param string $fromname - * @param integer $html - * @param string $altbody - * @param string $ccaddress - * @param string $ccname - * @param string $bcc - * @throws Exception - */ - public static function send($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, - $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') { - - $SMTPMODE = OC_Config::getValue( 'mail_smtpmode', 'sendmail' ); - $SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' ); - $SMTPPORT = OC_Config::getValue( 'mail_smtpport', 25 ); - $SMTPAUTH = OC_Config::getValue( 'mail_smtpauth', false ); - $SMTPAUTHTYPE = OC_Config::getValue( 'mail_smtpauthtype', 'LOGIN' ); - $SMTPUSERNAME = OC_Config::getValue( 'mail_smtpname', '' ); - $SMTPPASSWORD = OC_Config::getValue( 'mail_smtppassword', '' ); - $SMTPDEBUG = OC_Config::getValue( 'mail_smtpdebug', false ); - $SMTPTIMEOUT = OC_Config::getValue( 'mail_smtptimeout', 10 ); - $SMTPSECURE = OC_Config::getValue( 'mail_smtpsecure', '' ); - - - $mailo = new PHPMailer(true); - if($SMTPMODE=='sendmail') { - $mailo->IsSendmail(); - }elseif($SMTPMODE=='smtp') { - $mailo->IsSMTP(); - }elseif($SMTPMODE=='qmail') { - $mailo->IsQmail(); - }else{ - $mailo->IsMail(); - } - - - $mailo->Host = $SMTPHOST; - $mailo->Port = $SMTPPORT; - $mailo->SMTPAuth = $SMTPAUTH; - $mailo->SMTPDebug = $SMTPDEBUG; - $mailo->Debugoutput = 'error_log'; - $mailo->SMTPSecure = $SMTPSECURE; - $mailo->AuthType = $SMTPAUTHTYPE; - $mailo->Username = $SMTPUSERNAME; - $mailo->Password = $SMTPPASSWORD; - $mailo->Timeout = $SMTPTIMEOUT; - - $mailo->From = $fromaddress; - $mailo->FromName = $fromname;; - $mailo->Sender = $fromaddress; - $mailo->XMailer = ' '; - try { - $toaddress = self::buildAsciiEmail($toaddress); - $mailo->AddAddress($toaddress, $toname); - - if($ccaddress != '') $mailo->AddCC($ccaddress, $ccname); - if($bcc != '') $mailo->AddBCC($bcc); - - $mailo->AddReplyTo($fromaddress, $fromname); - - $mailo->WordWrap = 78; - $mailo->IsHTML($html == 1); - - $mailo->Subject = $subject; - if($altbody == '') { - $mailo->Body = $mailtext.OC_MAIL::getfooter(); - $mailo->AltBody = ''; - }else{ - $mailo->Body = $mailtext; - $mailo->AltBody = $altbody; - } - $mailo->CharSet = 'UTF-8'; - - $mailo->Send(); - unset($mailo); - OC_Log::write('mail', - 'Mail from '.$fromname.' ('.$fromaddress.')'.' to: '.$toname.'('.$toaddress.')'.' subject: '.$subject, - OC_Log::DEBUG); - } catch (Exception $exception) { - OC_Log::write('mail', $exception->getMessage(), OC_Log::ERROR); - throw($exception); - } - } - - /** - * return the footer for a mail - * - */ - public static function getfooter() { - - $defaults = new OC_Defaults(); - - $txt="\n--\n"; - $txt.=$defaults->getName() . "\n"; - $txt.=$defaults->getSlogan() . "\n"; - - return($txt); - - } - - /** - * @param string $emailAddress a given email address to be validated - * @return bool - */ - public static function validateAddress($emailAddress) { - if (strpos($emailAddress, '@') === false) { - return false; - } - $emailAddress = self::buildAsciiEmail($emailAddress); - return PHPMailer::ValidateAddress($emailAddress); - } - - /** - * IDN domains will be properly converted to ascii domains. - * - * @param string $emailAddress - * @return string - */ - public static function buildAsciiEmail($emailAddress) { - if (!function_exists('idn_to_ascii')) { - return $emailAddress; - } - - list($name, $domain) = explode('@', $emailAddress, 2); - $domain = idn_to_ascii($domain); - - return "$name@$domain"; - } - -} diff --git a/lib/private/mail/mailer.php b/lib/private/mail/mailer.php new file mode 100644 index 00000000000..13c9167cabc --- /dev/null +++ b/lib/private/mail/mailer.php @@ -0,0 +1,207 @@ +<?php +/** + * Copyright (c) 2014-2015 Lukas Reschke <lukas@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Mail; + +use OCP\IConfig; +use OCP\Mail\IMailer; +use OCP\ILogger; + +/** + * Class Mailer provides some basic functions to create a mail message that can be used in combination with + * \OC\Mail\Message. + * + * Example usage: + * + * $mailer = \OC::$server->getMailer(); + * $message = $mailer->createMessage(); + * $message->setSubject('Your Subject'); + * $message->setFrom(array('cloud@domain.org' => 'ownCloud Notifier'); + * $message->setTo(array('recipient@domain.org' => 'Recipient'); + * $message->setBody('The message text'); + * $mailer->send($message); + * + * This message can then be passed to send() of \OC\Mail\Mailer + * + * @package OC\Mail + */ +class Mailer implements IMailer { + /** @var \Swift_SmtpTransport|\Swift_SendmailTransport|\Swift_MailTransport Cached transport */ + private $instance = null; + /** @var IConfig */ + private $config; + /** @var ILogger */ + private $logger; + /** @var \OC_Defaults */ + private $defaults; + + /** + * @param IConfig $config + * @param ILogger $logger + * @param \OC_Defaults $defaults + */ + function __construct(IConfig $config, + ILogger $logger, + \OC_Defaults $defaults) { + $this->config = $config; + $this->logger = $logger; + $this->defaults = $defaults; + } + + /** + * Creates a new message object that can be passed to send() + * + * @return Message + */ + public function createMessage() { + return new Message(new \Swift_Message()); + } + + /** + * Send the specified message. Also sets the from address to the value defined in config.php + * if no-one has been passed. + * + * @param Message $message Message to send + * @return string[] Array with failed recipients. Be aware that this depends on the used mail backend and + * therefore should be considered + * @throws \Exception In case it was not possible to send the message. (for example if an invalid mail address + * has been supplied.) + */ + public function send(Message $message) { + $debugMode = $this->config->getSystemValue('mail_smtpdebug', false); + + if (sizeof($message->getFrom()) === 0) { + $message->setFrom([\OCP\Util::getDefaultEmailAddress($this->defaults->getName())]); + } + + $failedRecipients = []; + + $mailer = $this->getInstance(); + + // Enable logger if debug mode is enabled + if($debugMode) { + $mailLogger = new \Swift_Plugins_Loggers_ArrayLogger(); + $mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($mailLogger)); + } + + $mailer->send($message->getSwiftMessage(), $failedRecipients); + + // Debugging logging + $logMessage = sprintf('Sent mail to "%s" with subject "%s"', print_r($message->getTo(), true), $message->getSubject()); + $this->logger->debug($logMessage, ['app' => 'core']); + if($debugMode && isset($mailLogger)) { + $this->logger->debug($mailLogger->dump(), ['app' => 'core']); + } + + return $failedRecipients; + } + + /** + * Checks if an e-mail address is valid + * + * @param string $email Email address to be validated + * @return bool True if the mail address is valid, false otherwise + */ + public function validateMailAddress($email) { + return \Swift_Validate::email($this->convertEmail($email)); + } + + /** + * SwiftMailer does currently not work with IDN domains, this function therefore converts the domains + * + * FIXME: Remove this once SwiftMailer supports IDN + * + * @param string $email + * @return string Converted mail address if `idn_to_ascii` exists + */ + protected function convertEmail($email) { + if (!function_exists('idn_to_ascii') || strpos($email, '@') === false) { + return $email; + } + + list($name, $domain) = explode('@', $email, 2); + $domain = idn_to_ascii($domain); + return $name.'@'.$domain; + } + + /** + * Returns whatever transport is configured within the config + * + * @return \Swift_SmtpTransport|\Swift_SendmailTransport|\Swift_MailTransport + */ + protected function getInstance() { + if (!is_null($this->instance)) { + return $this->instance; + } + + switch ($this->config->getSystemValue('mail_smtpmode', 'php')) { + case 'smtp': + $this->instance = $this->getSMTPInstance(); + break; + case 'sendmail': + $this->instance = $this->getSendMailInstance(); + break; + default: + $this->instance = $this->getMailInstance(); + break; + } + + return $this->instance; + } + + /** + * Returns the SMTP transport + * + * @return \Swift_SmtpTransport + */ + protected function getSmtpInstance() { + $transport = \Swift_SmtpTransport::newInstance(); + $transport->setTimeout($this->config->getSystemValue('mail_smtptimeout', 10)); + $transport->setHost($this->config->getSystemValue('mail_smtphost', '127.0.0.1')); + $transport->setPort($this->config->getSystemValue('mail_smtpport', 25)); + if ($this->config->getSystemValue('mail_smtpauth', false)) { + $transport->setUsername($this->config->getSystemValue('mail_smtpname', '')); + $transport->setPassword($this->config->getSystemValue('mail_smtppassword', '')); + $transport->setAuthMode($this->config->getSystemValue('mail_smtpauthtype', 'LOGIN')); + } + $smtpSecurity = $this->config->getSystemValue('mail_smtpsecure', ''); + if (!empty($smtpSecurity)) { + $transport->setEncryption($smtpSecurity); + } + $transport->start(); + return $transport; + } + + /** + * Returns the sendmail transport + * + * @return \Swift_SendmailTransport + */ + protected function getSendMailInstance() { + switch ($this->config->getSystemValue('mail_smtpmode', 'sendmail')) { + case 'qmail': + $binaryPath = '/var/qmail/bin/sendmail'; + break; + default: + $binaryPath = '/usr/sbin/sendmail'; + break; + } + + return \Swift_SendmailTransport::newInstance($binaryPath . ' -bs'); + } + + /** + * Returns the mail transport + * + * @return \Swift_MailTransport + */ + protected function getMailInstance() { + return \Swift_MailTransport::newInstance(); + } + +} diff --git a/lib/private/mail/message.php b/lib/private/mail/message.php new file mode 100644 index 00000000000..60700196c5f --- /dev/null +++ b/lib/private/mail/message.php @@ -0,0 +1,206 @@ +<?php +/** + * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Mail; + +use Swift_Message; + +/** + * Class Message provides a wrapper around SwiftMail + * + * @package OC\Mail + */ +class Message { + /** @var Swift_Message */ + private $swiftMessage; + + /** + * @param Swift_Message $swiftMessage + */ + function __construct(Swift_Message $swiftMessage) { + $this->swiftMessage = $swiftMessage; + } + + /** + * SwiftMailer does currently not work with IDN domains, this function therefore converts the domains + * FIXME: Remove this once SwiftMailer supports IDN + * + * @param array $addresses Array of mail addresses, key will get converted + * @return array Converted addresses if `idn_to_ascii` exists + */ + protected function convertAddresses($addresses) { + if (!function_exists('idn_to_ascii')) { + return $addresses; + } + + $convertedAddresses = array(); + + foreach($addresses as $email => $readableName) { + if(!is_numeric($email)) { + list($name, $domain) = explode('@', $email, 2); + $domain = idn_to_ascii($domain); + $convertedAddresses[$name.'@'.$domain] = $readableName; + } else { + list($name, $domain) = explode('@', $readableName, 2); + $domain = idn_to_ascii($domain); + $convertedAddresses[$email] = $name.'@'.$domain; + } + } + + return $convertedAddresses; + } + + /** + * Set the from address of this message. + * + * If no "From" address is used \OC\Mail\Mailer will use mail_from_address and mail_domain from config.php + * + * @param array $addresses Example: array('sender@domain.org', 'other@domain.org' => 'A name') + * @return $this + */ + public function setFrom(array $addresses) { + $addresses = $this->convertAddresses($addresses); + + $this->swiftMessage->setFrom($addresses); + return $this; + } + + /** + * Get the from address of this message. + * + * @return array + */ + public function getFrom() { + return $this->swiftMessage->getFrom(); + } + + /** + * Set the to addresses of this message. + * + * @param array $recipients Example: array('recipient@domain.org', 'other@domain.org' => 'A name') + * @return $this + */ + public function setTo(array $recipients) { + $recipients = $this->convertAddresses($recipients); + + $this->swiftMessage->setTo($recipients); + return $this; + } + + /** + * Get the to address of this message. + * + * @return array + */ + public function getTo() { + return $this->swiftMessage->getTo(); + } + + /** + * Set the CC recipients of this message. + * + * @param array $recipients Example: array('recipient@domain.org', 'other@domain.org' => 'A name') + * @return $this + */ + public function setCc(array $recipients) { + $recipients = $this->convertAddresses($recipients); + + $this->swiftMessage->setCc($recipients); + return $this; + } + + /** + * Get the cc address of this message. + * + * @return array + */ + public function getCc() { + return $this->swiftMessage->getCc(); + } + + /** + * Set the BCC recipients of this message. + * + * @param array $recipients Example: array('recipient@domain.org', 'other@domain.org' => 'A name') + * @return $this + */ + public function setBcc(array $recipients) { + $recipients = $this->convertAddresses($recipients); + + $this->swiftMessage->setBcc($recipients); + return $this; + } + + /** + * Get the Bcc address of this message. + * + * @return array + */ + public function getBcc() { + return $this->swiftMessage->getBcc(); + } + + /** + * Set the subject of this message. + * + * @param $subject + * @return $this + */ + public function setSubject($subject) { + $this->swiftMessage->setSubject($subject); + return $this; + } + + /** + * Get the from subject of this message. + * + * @return string + */ + public function getSubject() { + return $this->swiftMessage->getSubject(); + } + + /** + * Set the plain-text body of this message. + * + * @param string $body + * @return $this + */ + public function setPlainBody($body) { + $this->swiftMessage->setBody($body); + return $this; + } + + /** + * Get the plain body of this message. + * + * @return string + */ + public function getPlainBody() { + return $this->swiftMessage->getBody(); + } + + /** + * Set the HTML body of this message. Consider also sending a plain-text body instead of only an HTML one. + * + * @param string $body + * @return $this + */ + public function setHtmlBody($body) { + $this->swiftMessage->addPart($body, 'text/html'); + return $this; + } + + /** + * Get's the underlying SwiftMessage + * @return Swift_Message + */ + public function getSwiftMessage() { + return $this->swiftMessage; + } +} diff --git a/lib/private/memcache/cache.php b/lib/private/memcache/cache.php index c606d94fa51..d2d0353febc 100644 --- a/lib/private/memcache/cache.php +++ b/lib/private/memcache/cache.php @@ -21,6 +21,9 @@ abstract class Cache implements \ArrayAccess, \OCP\ICache { $this->prefix = $prefix; } + /** + * @return string Prefix used for caching purposes + */ public function getPrefix() { return $this->prefix; } diff --git a/lib/private/mimetypes.list.php b/lib/private/mimetypes.list.php index 265fffa7db3..af2c651cf80 100644 --- a/lib/private/mimetypes.list.php +++ b/lib/private/mimetypes.list.php @@ -33,6 +33,7 @@ return array( 'accdb' => array('application/msaccess', null), 'ai' => array('application/illustrator', null), 'apk' => array('application/vnd.android.package-archive', null), + 'arw' => array('image/x-dcraw', null), 'avi' => array('video/x-msvideo', null), 'bash' => array('text/x-shellscript', null), 'blend' => array('application/x-blender', null), @@ -47,12 +48,15 @@ return array( 'cc' => array('text/x-c', null), 'cdr' => array('application/coreldraw', null), 'cpp' => array('text/x-c++src', null), + 'cr2' => array('image/x-dcraw', null), 'css' => array('text/css', null), 'csv' => array('text/csv', null), 'cvbdl' => array('application/x-cbr', null), 'c' => array('text/x-c', null), 'c++' => array('text/x-c++src', null), + 'dcr' => array('image/x-dcraw', null), 'deb' => array('application/x-deb', null), + 'dng' => array('image/x-dcraw', null), 'doc' => array('application/msword', null), 'docm' => array('application/vnd.ms-word.document.macroEnabled.12', null), 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', null), @@ -62,6 +66,7 @@ return array( 'eot' => array('application/vnd.ms-fontobject', null), 'epub' => array('application/epub+zip', null), 'eps' => array('application/postscript', null), + 'erf' => array('image/x-dcraw', null), 'exe' => array('application/x-ms-dos-executable', null), 'flac' => array('audio/flac', null), 'flv' => array('video/x-flv', null), @@ -72,11 +77,15 @@ return array( 'htm' => array('text/html', 'text/plain'), 'ical' => array('text/calendar', null), 'ics' => array('text/calendar', null), + 'iiq' => array('image/x-dcraw', null), 'impress' => array('text/impress', null), 'jpeg' => array('image/jpeg', null), 'jpg' => array('image/jpeg', null), + 'jps' => array('image/jpeg', null), 'js' => array('application/javascript', 'text/plain'), 'json' => array('application/json', 'text/plain'), + 'k25' => array('image/x-dcraw', null), + 'kdc' => array('image/x-dcraw', null), 'key' => array('application/x-iwork-keynote-sffkey', null), 'keynote' => array('application/x-iwork-keynote-sffkey', null), 'kra' => array('application/x-krita', null), @@ -87,6 +96,7 @@ return array( 'md' => array('text/markdown', null), 'mdb' => array('application/msaccess', null), 'mdwn' => array('text/markdown', null), + 'mef' => array('image/x-dcraw', null), 'mkv' => array('video/x-matroska', null), 'mobi' => array('application/x-mobipocket-ebook', null), 'mov' => array('video/quicktime', null), @@ -94,7 +104,9 @@ return array( 'mp4' => array('video/mp4', null), 'mpeg' => array('video/mpeg', null), 'mpg' => array('video/mpeg', null), + 'mpo' => array('image/jpeg', null), 'msi' => array('application/x-msi', null), + 'nef' => array('image/x-dcraw', null), 'numbers' => array('application/x-iwork-numbers-sffnumbers', null), 'odf' => array('application/vnd.oasis.opendocument.formula', null), 'odg' => array('application/vnd.oasis.opendocument.graphics', null), @@ -104,10 +116,12 @@ return array( 'oga' => array('audio/ogg', null), 'ogg' => array('audio/ogg', null), 'ogv' => array('video/ogg', null), + 'orf' => array('image/x-dcraw', null), 'otf' => array('application/font-sfnt', null), 'pages' => array('application/x-iwork-pages-sffpages', null), 'pdf' => array('application/pdf', null), 'pfb' => array('application/x-font', null), + 'pef' => array('image/x-dcraw', null), 'php' => array('application/x-php', null), 'pl' => array('application/x-perl', null), 'png' => array('image/png', null), @@ -125,11 +139,15 @@ return array( 'ps' => array('application/postscript', null), 'psd' => array('application/x-photoshop', null), 'py' => array('text/x-python', null), + 'raf' => array('image/x-dcraw', null), 'rar' => array('application/x-rar-compressed', null), 'reveal' => array('text/reveal', null), + 'rw2' => array('image/x-dcraw', null), 'sgf' => array('application/sgf', null), 'sh-lib' => array('text/x-shellscript', null), 'sh' => array('text/x-shellscript', null), + 'srf' => array('image/x-dcraw', null), + 'sr2' => array('image/x-dcraw', null), 'svg' => array('image/svg+xml', 'text/plain'), 'swf' => array('application/x-shockwave-flash', 'application/octet-stream'), 'tar' => array('application/x-tar', null), @@ -158,5 +176,6 @@ return array( 'xltm' => array('application/vnd.ms-excel.template.macroEnabled.12', null), 'xltx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.template', null), 'xml' => array('application/xml', 'text/plain'), + 'xrf' => array('image/x-dcraw', null), 'zip' => array('application/zip', null), ); diff --git a/lib/private/navigationmanager.php b/lib/private/navigationmanager.php index 8ad2f4c8f63..205ecccd506 100644 --- a/lib/private/navigationmanager.php +++ b/lib/private/navigationmanager.php @@ -14,13 +14,23 @@ namespace OC; */ class NavigationManager implements \OCP\INavigationManager { protected $entries = array(); + protected $closureEntries = array(); protected $activeEntry; /** * Creates a new navigation entry - * @param array $entry containing: id, name, order, icon and href key + * + * @param array|\Closure $entry Array containing: id, name, order, icon and href key + * The use of a closure is preferred, because it will avoid + * loading the routing of your app, unless required. + * @return void */ - public function add(array $entry) { + public function add($entry) { + if ($entry instanceof \Closure) { + $this->closureEntries[] = $entry; + return; + } + $entry['active'] = false; if(!isset($entry['icon'])) { $entry['icon'] = ''; @@ -33,6 +43,10 @@ class NavigationManager implements \OCP\INavigationManager { * @return array an array of the added entries */ public function getAll() { + foreach ($this->closureEntries as $c) { + $this->add($c()); + } + $this->closureEntries = array(); return $this->entries; } @@ -41,6 +55,7 @@ class NavigationManager implements \OCP\INavigationManager { */ public function clear() { $this->entries = array(); + $this->closureEntries = array(); } /** diff --git a/lib/private/preview.php b/lib/private/preview.php index 6af1586293f..f69b0d6c971 100644 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -46,15 +46,10 @@ class Preview { /** * preview images object * - * @var \OC_Image + * @var \OCP\IImage */ private $preview; - //preview providers - static private $providers = array(); - static private $registeredProviders = array(); - static private $enabledProviders = array(); - /** * @var \OCP\Files\FileInfo */ @@ -95,11 +90,7 @@ class Preview { $this->preview = null; //check if there are preview backends - if (empty(self::$providers)) { - self::initProviders(); - } - - if (empty(self::$providers) && \OC::$server->getConfig()->getSystemValue('enable_previews', true)) { + if (!\OC::$server->getPreviewManager()->hasProviders() && \OC::$server->getConfig()->getSystemValue('enable_previews', true)) { \OC_Log::write('core', 'No preview providers exist', \OC_Log::ERROR); throw new \Exception('No preview providers'); } @@ -474,7 +465,7 @@ class Preview { /** * return a preview of a file - * @return \OC_Image + * @return \OCP\IImage */ public function getPreview() { if (!is_null($this->preview) && $this->preview->valid()) { @@ -510,37 +501,45 @@ class Preview { if (is_null($this->preview)) { $preview = null; - foreach (self::$providers as $supportedMimeType => $provider) { + $previewProviders = \OC::$server->getPreviewManager()->getProviders(); + foreach ($previewProviders as $supportedMimeType => $providers) { if (!preg_match($supportedMimeType, $this->mimeType)) { continue; } - \OC_Log::write('core', 'Generating preview for "' . $file . '" with "' . get_class($provider) . '"', \OC_Log::DEBUG); + foreach ($providers as $closure) { + $provider = $closure(); + if (!($provider instanceof \OCP\Preview\IProvider)) { + continue; + } - /** @var $provider Provider */ - $preview = $provider->getThumbnail($file, $maxX, $maxY, $scalingUp, $this->fileView); + \OC_Log::write('core', 'Generating preview for "' . $file . '" with "' . get_class($provider) . '"', \OC_Log::DEBUG); - if (!($preview instanceof \OC_Image)) { - continue; - } + /** @var $provider Provider */ + $preview = $provider->getThumbnail($file, $maxX, $maxY, $scalingUp, $this->fileView); - $this->preview = $preview; - $this->resizeAndCrop(); + if (!($preview instanceof \OCP\IImage)) { + continue; + } - $previewPath = $this->getPreviewPath($fileId); - $cachePath = $this->buildCachePath($fileId); + $this->preview = $preview; + $this->resizeAndCrop(); - if ($this->userView->is_dir($this->getThumbnailsFolder() . '/') === false) { - $this->userView->mkdir($this->getThumbnailsFolder() . '/'); - } + $previewPath = $this->getPreviewPath($fileId); + $cachePath = $this->buildCachePath($fileId); - if ($this->userView->is_dir($previewPath) === false) { - $this->userView->mkdir($previewPath); - } + if ($this->userView->is_dir($this->getThumbnailsFolder() . '/') === false) { + $this->userView->mkdir($this->getThumbnailsFolder() . '/'); + } + + if ($this->userView->is_dir($previewPath) === false) { + $this->userView->mkdir($previewPath); + } - $this->userView->file_put_contents($cachePath, $preview->data()); + $this->userView->file_put_contents($cachePath, $preview->data()); - break; + break 2; + } } } @@ -565,7 +564,7 @@ class Preview { if (is_null($this->preview)) { $this->getPreview(); } - if ($this->preview instanceof \OC_Image) { + if ($this->preview instanceof \OCP\IImage) { $this->preview->show($mimeType); } } @@ -581,8 +580,8 @@ class Preview { $scalingUp = $this->getScalingUp(); $maxScaleFactor = $this->getMaxScaleFactor(); - if (!($image instanceof \OC_Image)) { - \OC_Log::write('core', '$this->preview is not an instance of OC_Image', \OC_Log::DEBUG); + if (!($image instanceof \OCP\IImage)) { + \OC_Log::write('core', '$this->preview is not an instance of \OCP\IImage', \OC_Log::DEBUG); return; } @@ -686,146 +685,6 @@ class Preview { } /** - * register a new preview provider to be used - * @param string $class - * @param array $options - */ - public static function registerProvider($class, $options = array()) { - /** - * Only register providers that have been explicitly enabled - * - * The following providers are enabled by default: - * - OC\Preview\Image - * - OC\Preview\MP3 - * - OC\Preview\TXT - * - OC\Preview\MarkDown - * - * The following providers are disabled by default due to performance or privacy concerns: - * - OC\Preview\MSOfficeDoc - * - OC\Preview\MSOffice2003 - * - OC\Preview\MSOffice2007 - * - OC\Preview\OpenDocument - * - OC\Preview\StarOffice - * - OC\Preview\SVG - * - OC\Preview\Movie - * - OC\Preview\PDF - * - OC\Preview\TIFF - * - OC\Preview\Illustrator - * - OC\Preview\Postscript - * - OC\Preview\Photoshop - * - OC\Preview\Font - */ - if(empty(self::$enabledProviders)) { - self::$enabledProviders = \OC::$server->getConfig()->getSystemValue('enabledPreviewProviders', array( - 'OC\Preview\Image', - 'OC\Preview\MP3', - 'OC\Preview\TXT', - 'OC\Preview\MarkDown', - )); - } - - if(in_array($class, self::$enabledProviders)) { - self::$registeredProviders[] = array('class' => $class, 'options' => $options); - } - } - - /** - * create instances of all the registered preview providers - * @return void - */ - private static function initProviders() { - if (!\OC::$server->getConfig()->getSystemValue('enable_previews', true)) { - self::$providers = array(); - return; - } - - if (!empty(self::$providers)) { - return; - } - - self::registerCoreProviders(); - foreach (self::$registeredProviders as $provider) { - $class = $provider['class']; - $options = $provider['options']; - - /** @var $object Provider */ - $object = new $class($options); - self::$providers[$object->getMimeType()] = $object; - } - - $keys = array_map('strlen', array_keys(self::$providers)); - array_multisort($keys, SORT_DESC, self::$providers); - } - - protected static function registerCoreProviders() { - self::registerProvider('OC\Preview\TXT'); - self::registerProvider('OC\Preview\MarkDown'); - self::registerProvider('OC\Preview\Image'); - self::registerProvider('OC\Preview\MP3'); - - // SVG, Office and Bitmap require imagick - if (extension_loaded('imagick')) { - $checkImagick = new \Imagick(); - - $imagickProviders = array( - 'SVG' => 'OC\Preview\SVG', - 'TIFF' => 'OC\Preview\TIFF', - 'PDF' => 'OC\Preview\PDF', - 'AI' => 'OC\Preview\Illustrator', - 'PSD' => 'OC\Preview\Photoshop', - 'EPS' => 'OC\Preview\Postscript', - 'TTF' => 'OC\Preview\Font', - ); - - foreach ($imagickProviders as $queryFormat => $provider) { - if (count($checkImagick->queryFormats($queryFormat)) === 1) { - self::registerProvider($provider); - } - } - - if (count($checkImagick->queryFormats('PDF')) === 1) { - // Office previews are currently not supported on Windows - if (!\OC_Util::runningOnWindows() && \OC_Helper::is_function_enabled('shell_exec')) { - $officeFound = is_string(\OC::$server->getConfig()->getSystemValue('preview_libreoffice_path', null)); - - if (!$officeFound) { - //let's see if there is libreoffice or openoffice on this machine - $whichLibreOffice = shell_exec('command -v libreoffice'); - $officeFound = !empty($whichLibreOffice); - if (!$officeFound) { - $whichOpenOffice = shell_exec('command -v openoffice'); - $officeFound = !empty($whichOpenOffice); - } - } - - if ($officeFound) { - self::registerProvider('OC\Preview\MSOfficeDoc'); - self::registerProvider('OC\Preview\MSOffice2003'); - self::registerProvider('OC\Preview\MSOffice2007'); - self::registerProvider('OC\Preview\OpenDocument'); - self::registerProvider('OC\Preview\StarOffice'); - } - } - } - } - - // Video requires avconv or ffmpeg and is therefor - // currently not supported on Windows. - if (!\OC_Util::runningOnWindows()) { - $avconvBinary = \OC_Helper::findBinaryPath('avconv'); - $ffmpegBinary = ($avconvBinary) ? null : \OC_Helper::findBinaryPath('ffmpeg'); - - if ($avconvBinary || $ffmpegBinary) { - // FIXME // a bit hacky but didn't want to use subclasses - \OC\Preview\Movie::$avconvBinary = $avconvBinary; - \OC\Preview\Movie::$ffmpegBinary = $ffmpegBinary; - - self::registerProvider('OC\Preview\Movie'); - } - } - } - - /** * @param array $args */ public static function post_write($args) { @@ -915,60 +774,6 @@ class Preview { } /** - * Check if a preview can be generated for a file - * - * @param \OC\Files\FileInfo $file - * @return bool - */ - public static function isAvailable(\OC\Files\FileInfo $file) { - if (!\OC_Config::getValue('enable_previews', true)) { - return false; - } - - $mount = $file->getMountPoint(); - if ($mount and !$mount->getOption('previews', true)){ - return false; - } - - //check if there are preview backends - if (empty(self::$providers)) { - self::initProviders(); - } - - foreach (self::$providers as $supportedMimeType => $provider) { - /** - * @var \OC\Preview\Provider $provider - */ - if (preg_match($supportedMimeType, $file->getMimetype())) { - return $provider->isAvailable($file); - } - } - return false; - } - - /** - * @param string $mimeType - * @return bool - */ - public static function isMimeSupported($mimeType) { - if (!\OC_Config::getValue('enable_previews', true)) { - return false; - } - - //check if there are preview backends - if (empty(self::$providers)) { - self::initProviders(); - } - - foreach(self::$providers as $supportedMimetype => $provider) { - if(preg_match($supportedMimetype, $mimeType)) { - return true; - } - } - return false; - } - - /** * @param int $fileId * @return string */ diff --git a/lib/private/preview/movie.php b/lib/private/preview/movie.php index 06353ddebb7..85151f5dbaa 100644 --- a/lib/private/preview/movie.php +++ b/lib/private/preview/movie.php @@ -61,7 +61,7 @@ class Movie extends Provider { * @param int $maxY * @param string $absPath * @param int $second - * @return bool|\OC_Image + * @return bool|\OCP\IImage */ private function generateThumbNail($maxX, $maxY, $absPath, $second) { $tmpPath = \OC_Helper::tmpFile(); diff --git a/lib/private/preview/mp3.php b/lib/private/preview/mp3.php index f1a50d99e13..19360f4f036 100644 --- a/lib/private/preview/mp3.php +++ b/lib/private/preview/mp3.php @@ -39,8 +39,7 @@ class MP3 extends Provider { /** * Generates a default image when the file has no cover * - * @return false|\OC_Image False if the default image is missing or invalid, - * otherwise the image is returned as \OC_Image + * @return bool|\OCP\IImage false if the default image is missing or invalid */ private function getNoCoverThumbnail() { $icon = \OC::$SERVERROOT . '/core/img/filetypes/audio.png'; diff --git a/lib/private/preview/provider.php b/lib/private/preview/provider.php index ead67eaeef7..1d6fac13965 100644 --- a/lib/private/preview/provider.php +++ b/lib/private/preview/provider.php @@ -1,10 +1,17 @@ <?php namespace OC\Preview; -abstract class Provider { +use OCP\Preview\IProvider; + +abstract class Provider implements IProvider { private $options; - public function __construct($options) { + /** + * Constructor + * + * @param array $options + */ + public function __construct(array $options = []) { $this->options = $options; } @@ -16,10 +23,10 @@ abstract class Provider { /** * Check if a preview can be generated for $path * - * @param \OC\Files\FileInfo $file + * @param \OCP\Files\FileInfo $file * @return bool */ - public function isAvailable($file) { + public function isAvailable(\OCP\Files\FileInfo $file) { return true; } @@ -30,9 +37,7 @@ abstract class Provider { * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image * @param bool $scalingup Disable/Enable upscaling of previews * @param \OC\Files\View $fileview fileview object of user folder - * @return mixed - * false if no preview was generated - * OC_Image object of the preview + * @return bool|\OCP\IImage false if no preview was generated */ abstract public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview); } diff --git a/lib/private/preview/txt.php b/lib/private/preview/txt.php index 8b414dc5726..772b56c72cc 100644 --- a/lib/private/preview/txt.php +++ b/lib/private/preview/txt.php @@ -18,7 +18,7 @@ class TXT extends Provider { /** * {@inheritDoc} */ - public function isAvailable($file) { + public function isAvailable(\OCP\Files\FileInfo $file) { return $file->getSize() > 5; } diff --git a/lib/private/previewmanager.php b/lib/private/previewmanager.php index 85bf609743d..9f78379ba0f 100644 --- a/lib/private/previewmanager.php +++ b/lib/private/previewmanager.php @@ -8,10 +8,87 @@ */ namespace OC; -use OCP\image; use OCP\IPreview; +use OCP\Preview\IProvider; class PreviewManager implements IPreview { + /** @var \OCP\IConfig */ + protected $config; + + /** @var bool */ + protected $providerListDirty = false; + + /** @var bool */ + protected $registeredCoreProviders = false; + + /** @var array */ + protected $providers = []; + + /** @var array mime type => support status */ + protected $mimeTypeSupportMap = []; + + /** @var array */ + protected $defaultProviders; + + /** + * Constructor + * + * @param \OCP\IConfig $config + */ + public function __construct(\OCP\IConfig $config) { + $this->config = $config; + } + + /** + * In order to improve lazy loading a closure can be registered which will be + * called in case preview providers are actually requested + * + * $callable has to return an instance of \OCP\Preview\IProvider + * + * @param string $mimeTypeRegex Regex with the mime types that are supported by this provider + * @param \Closure $callable + * @return void + */ + public function registerProvider($mimeTypeRegex, \Closure $callable) { + if (!$this->config->getSystemValue('enable_previews', true)) { + return; + } + + if (!isset($this->providers[$mimeTypeRegex])) { + $this->providers[$mimeTypeRegex] = []; + } + $this->providers[$mimeTypeRegex][] = $callable; + $this->providerListDirty = true; + } + + /** + * Get all providers + * @return array + */ + public function getProviders() { + if (!$this->config->getSystemValue('enable_previews', true)) { + return []; + } + + $this->registerCoreProviders(); + if ($this->providerListDirty) { + $keys = array_map('strlen', array_keys($this->providers)); + array_multisort($keys, SORT_DESC, $this->providers); + $this->providerListDirty = false; + } + + return $this->providers; + } + + /** + * Does the manager have any providers + * @return bool + */ + public function hasProviders() { + $this->registerCoreProviders(); + return !empty($this->providers); + } + /** * return a preview of a file * @@ -19,9 +96,9 @@ class PreviewManager implements IPreview { * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image * @param boolean $scaleUp Scale smaller images up to the thumbnail size or not. Might look ugly - * @return \OCP\Image + * @return \OCP\IImage */ - function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false) { + public function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false) { $preview = new \OC\Preview('', '/', $file, $maxX, $maxY, $scaleUp); return $preview->getPreview(); } @@ -32,17 +109,198 @@ class PreviewManager implements IPreview { * @param string $mimeType * @return boolean */ - function isMimeSupported($mimeType = '*') { - return \OC\Preview::isMimeSupported($mimeType); + public function isMimeSupported($mimeType = '*') { + if (!$this->config->getSystemValue('enable_previews', true)) { + return false; + } + + if (isset($this->mimeTypeSupportMap[$mimeType])) { + return $this->mimeTypeSupportMap[$mimeType]; + } + + $this->registerCoreProviders(); + $providerMimeTypes = array_keys($this->providers); + foreach ($providerMimeTypes as $supportedMimeType) { + if (preg_match($supportedMimeType, $mimeType)) { + $this->mimeTypeSupportMap[$mimeType] = true; + return true; + } + } + $this->mimeTypeSupportMap[$mimeType] = false; + return false; } /** * Check if a preview can be generated for a file * - * @param \OC\Files\FileInfo $file + * @param \OCP\Files\FileInfo $file * @return bool */ - function isAvailable($file) { - return \OC\Preview::isAvailable($file); + public function isAvailable(\OCP\Files\FileInfo $file) { + if (!$this->config->getSystemValue('enable_previews', true)) { + return false; + } + + $this->registerCoreProviders(); + if (!$this->isMimeSupported($file->getMimetype())) { + return false; + } + + $mount = $file->getMountPoint(); + if ($mount and !$mount->getOption('previews', true)){ + return false; + } + + foreach ($this->providers as $supportedMimeType => $providers) { + if (preg_match($supportedMimeType, $file->getMimetype())) { + foreach ($providers as $closure) { + $provider = $closure(); + if (!($provider instanceof IProvider)) { + continue; + } + + /** @var $provider IProvider */ + if ($provider->isAvailable($file)) { + return true; + } + } + } + } + return false; + } + + /** + * List of enabled default providers + * + * The following providers are enabled by default: + * - OC\Preview\Image + * - OC\Preview\MarkDown + * - OC\Preview\MP3 + * - OC\Preview\TXT + * + * The following providers are disabled by default due to performance or privacy concerns: + * - OC\Preview\Font + * - OC\Preview\Illustrator + * - OC\Preview\Movie + * - OC\Preview\MSOfficeDoc + * - OC\Preview\MSOffice2003 + * - OC\Preview\MSOffice2007 + * - OC\Preview\OpenDocument + * - OC\Preview\PDF + * - OC\Preview\Photoshop + * - OC\Preview\Postscript + * - OC\Preview\StarOffice + * - OC\Preview\SVG + * - OC\Preview\TIFF + * + * @return array + */ + protected function getEnabledDefaultProvider() { + if ($this->defaultProviders !== null) { + return $this->defaultProviders; + } + + $this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', [ + 'OC\Preview\Image', + 'OC\Preview\MarkDown', + 'OC\Preview\MP3', + 'OC\Preview\TXT', + ]); + return $this->defaultProviders; + } + + /** + * Register the default providers (if enabled) + * + * @param string $class + * @param string $mimeType + */ + protected function registerCoreProvider($class, $mimeType, $options = []) { + if (in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) { + $this->registerProvider($mimeType, function () use ($class, $options) { + return new $class($options); + }); + } + } + + /** + * Register the default providers (if enabled) + */ + protected function registerCoreProviders() { + if ($this->registeredCoreProviders) { + return; + } + $this->registeredCoreProviders = true; + + $this->registerCoreProvider('OC\Preview\TXT', '/text\/plain/'); + $this->registerCoreProvider('OC\Preview\MarkDown', '/text\/(x-)?markdown/'); + $this->registerCoreProvider('OC\Preview\Image', '/image\/(?!tiff$)(?!svg.*).*/'); + $this->registerCoreProvider('OC\Preview\MP3', '/audio\/mpeg/'); + + // SVG, Office and Bitmap require imagick + if (extension_loaded('imagick')) { + $checkImagick = new \Imagick(); + + $imagickProviders = [ + 'SVG' => ['mimetype' => '/image\/svg\+xml/', 'class' => '\OC\Preview\SVG'], + 'TIFF' => ['mimetype' => '/image\/tiff/', 'class' => '\OC\Preview\TIFF'], + 'PDF' => ['mimetype' => '/application\/pdf/', 'class' => '\OC\Preview\PDF'], + 'AI' => ['mimetype' => '/application\/illustrator/', 'class' => '\OC\Preview\Illustrator'], + 'PSD' => ['mimetype' => '/application\/x-photoshop/', 'class' => '\OC\Preview\Photoshop'], + 'EPS' => ['mimetype' => '/application\/postscript/', 'class' => '\OC\Preview\Postscript'], + 'TTF' => ['mimetype' => '/application\/(?:font-sfnt|x-font$)/', 'class' => '\OC\Preview\Font'], + ]; + + foreach ($imagickProviders as $queryFormat => $provider) { + $class = $provider['class']; + if (!in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) { + continue; + } + + if (count($checkImagick->queryFormats($queryFormat)) === 1) { + $this->registerCoreProvider($class, $provider['mimetype']); + } + } + + if (count($checkImagick->queryFormats('PDF')) === 1) { + // Office previews are currently not supported on Windows + if (!\OC_Util::runningOnWindows() && \OC_Helper::is_function_enabled('shell_exec')) { + $officeFound = is_string($this->config->getSystemValue('preview_libreoffice_path', null)); + + if (!$officeFound) { + //let's see if there is libreoffice or openoffice on this machine + $whichLibreOffice = shell_exec('command -v libreoffice'); + $officeFound = !empty($whichLibreOffice); + if (!$officeFound) { + $whichOpenOffice = shell_exec('command -v openoffice'); + $officeFound = !empty($whichOpenOffice); + } + } + + if ($officeFound) { + $this->registerCoreProvider('\OC\Preview\MSOfficeDoc', '/application\/msword/'); + $this->registerCoreProvider('\OC\Preview\MSOffice2003', '/application\/vnd.ms-.*/'); + $this->registerCoreProvider('\OC\Preview\MSOffice2007', '/application\/vnd.openxmlformats-officedocument.*/'); + $this->registerCoreProvider('\OC\Preview\OpenDocument', '/application\/vnd.oasis.opendocument.*/'); + $this->registerCoreProvider('\OC\Preview\StarOffice', '/application\/vnd.sun.xml.*/'); + } + } + } + } + + // Video requires avconv or ffmpeg and is therefor + // currently not supported on Windows. + if (in_array('OC\Preview\Movie', $this->getEnabledDefaultProvider()) && !\OC_Util::runningOnWindows()) { + $avconvBinary = \OC_Helper::findBinaryPath('avconv'); + $ffmpegBinary = ($avconvBinary) ? null : \OC_Helper::findBinaryPath('ffmpeg'); + + if ($avconvBinary || $ffmpegBinary) { + // FIXME // a bit hacky but didn't want to use subclasses + \OC\Preview\Movie::$avconvBinary = $avconvBinary; + \OC\Preview\Movie::$ffmpegBinary = $ffmpegBinary; + + $this->registerCoreProvider('\OC\Preview\Movie', '/video\/.*/'); + } + } } } diff --git a/lib/private/server.php b/lib/private/server.php index 896abf04a40..fd7a2bea2d1 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -11,6 +11,8 @@ use OC\Command\AsyncBus; use OC\Diagnostics\NullQueryLogger; use OC\Diagnostics\EventLogger; use OC\Diagnostics\QueryLogger; +use OC\Mail\Mailer; +use OC\Memcache\ArrayCache; use OC\Security\CertificateManager; use OC\Files\Node\Root; use OC\Files\View; @@ -43,8 +45,8 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('ContactsManager', function ($c) { return new ContactsManager(); }); - $this->registerService('PreviewManager', function ($c) { - return new PreviewManager(); + $this->registerService('PreviewManager', function (Server $c) { + return new PreviewManager($c->getConfig()); }); $this->registerService('TagMapper', function(Server $c) { return new TagMapper($c->getDatabaseConnection()); @@ -146,7 +148,11 @@ class Server extends SimpleContainer implements IServerContainer { }); $this->registerService('URLGenerator', function (Server $c) { $config = $c->getConfig(); - return new \OC\URLGenerator($config); + $cacheFactory = $c->getMemCacheFactory(); + return new \OC\URLGenerator( + $config, + $cacheFactory + ); }); $this->registerService('AppHelper', function ($c) { return new \OC\AppHelper(); @@ -154,12 +160,25 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('UserCache', function ($c) { return new UserCache(); }); - $this->registerService('MemCacheFactory', function ($c) { + $this->registerService('MemCacheFactory', function (Server $c) { $config = $c->getConfig(); - $instanceId = \OC_Util::getInstanceId(); - return new \OC\Memcache\Factory($instanceId, - $config->getSystemValue('memcache.local', null), - $config->getSystemValue('memcache.distributed', null) + + if($config->getSystemValue('installed', false)) { + $v = \OC_App::getAppVersions(); + $v['core'] = implode('.', \OC_Util::getVersion()); + $version = implode(',', $v); + $instanceId = \OC_Util::getInstanceId(); + $path = \OC::$SERVERROOT; + $prefix = md5($instanceId.'-'.$version.'-'.$path); + return new \OC\Memcache\Factory($prefix, + $config->getSystemValue('memcache.local', null), + $config->getSystemValue('memcache.distributed', null) + ); + } + + return new \OC\Memcache\Factory('', + new ArrayCache(), + new ArrayCache() ); }); $this->registerService('ActivityManager', function ($c) { @@ -312,6 +331,13 @@ class Server extends SimpleContainer implements IServerContainer { $stream ); }); + $this->registerService('Mailer', function(Server $c) { + return new Mailer( + $c->getConfig(), + $c->getLogger(), + new \OC_Defaults() + ); + }); } /** @@ -713,6 +739,15 @@ class Server extends SimpleContainer implements IServerContainer { } /** + * Creates a new mailer + * + * @return \OCP\Mail\IMailer + */ + function getMailer() { + return $this->query('Mailer'); + } + + /** * Get the webroot * * @return string diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php index 8fda6b3b3ee..acd93630f40 100644 --- a/lib/private/session/internal.php +++ b/lib/private/session/internal.php @@ -18,7 +18,9 @@ namespace OC\Session; class Internal extends Session { public function __construct($name) { session_name($name); + set_error_handler(array($this, 'trapError')); session_start(); + restore_error_handler(); if (!isset($_SESSION)) { throw new \Exception('Failed to start session'); } @@ -82,7 +84,11 @@ class Internal extends Session { throw new \Exception('The session cannot be reopened - reopen() is ony to be used in unit testing.'); } - private function validateSession() { + public function trapError($errorNumber, $errorString) { + throw new \ErrorException($errorString); + } + + private function validateSession() { if ($this->sessionClosed) { throw new \Exception('Session has been closed - no further changes to the session as allowed'); } diff --git a/lib/private/setup.php b/lib/private/setup.php index 44b6ad56cb8..84ac735f27f 100644 --- a/lib/private/setup.php +++ b/lib/private/setup.php @@ -184,16 +184,6 @@ class Setup { 'hint' => $this->l10n->t('Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.') ); } - if(!function_exists('curl_init') && PHP_INT_SIZE === 4) { - $errors[] = array( - 'error' => $this->l10n->t( - 'It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. ' . - 'This will lead to problems with files over 4 GB and is highly discouraged.', - $this->defaults->getName() - ), - 'hint' => $this->l10n->t('Please install the cURL extension and restart your webserver.') - ); - } return array( 'hasSQLite' => isset($databases['sqlite']), @@ -338,6 +328,11 @@ class Setup { self::protectDataDirectory(); } + //try to write logtimezone + if (date_default_timezone_get()) { + \OC_Config::setValue('logtimezone', date_default_timezone_get()); + } + //and we are done $config->setSystemValue('installed', true); } diff --git a/lib/private/share/share.php b/lib/private/share/share.php index 974ebf41f93..dff3af56f40 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1097,9 +1097,17 @@ class Share extends \OC\Share\Constants { */ public static function setExpirationDate($itemType, $itemSource, $date, $shareTime = null) { $user = \OC_User::getUser(); + $l = \OC::$server->getL10N('lib'); if ($date == '') { - $date = null; + if (\OCP\Util::isDefaultExpireDateEnforced()) { + $warning = 'Cannot clear expiration date. Shares are required to have an expiration date.'; + $warning_t = $l->t('Cannot clear expiration date. Shares are required to have an expiration date.'); + \OCP\Util::writeLog('OCP\Share', $warning, \OCP\Util::WARN); + throw new \Exception($warning_t); + } else { + $date = null; + } } else { $date = self::validateExpireDate($date, $shareTime, $itemType, $itemSource); } diff --git a/lib/private/template.php b/lib/private/template.php index b0d212c6f53..e6b76cc664e 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -217,6 +217,7 @@ class OC_Template extends \OC\Template\Base { public static function printExceptionErrorPage(Exception $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()); diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index 3220d9d969c..3f8422b9f0b 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -242,7 +242,11 @@ class OC_TemplateLayout extends OC_Template { private static function hashFileNames($files) { foreach($files as $i => $file) { - $files[$i] = self::convertToRelativePath($file[0]).'/'.$file[2]; + try { + $files[$i] = self::convertToRelativePath($file[0]).'/'.$file[2]; + } catch (\Exception $e) { + $files[$i] = $file[0].'/'.$file[2]; + } } sort($files); diff --git a/lib/private/urlgenerator.php b/lib/private/urlgenerator.php index e87a6c354fb..93666a86780 100644 --- a/lib/private/urlgenerator.php +++ b/lib/private/urlgenerator.php @@ -9,6 +9,8 @@ namespace OC; use OC_Defaults; +use OCP\ICacheFactory; +use OCP\IConfig; use OCP\IURLGenerator; use RuntimeException; @@ -16,17 +18,19 @@ use RuntimeException; * Class to generate URLs */ class URLGenerator implements IURLGenerator { - - /** - * @var \OCP\IConfig - */ + /** @var IConfig */ private $config; + /** @var ICacheFactory */ + private $cacheFactory; /** - * @param \OCP\IConfig $config + * @param IConfig $config + * @param ICacheFactory $cacheFactory */ - public function __construct($config) { + public function __construct(IConfig $config, + ICacheFactory $cacheFactory) { $this->config = $config; + $this->cacheFactory = $cacheFactory; } /** @@ -113,6 +117,12 @@ class URLGenerator implements IURLGenerator { * Returns the path to the image. */ public function imagePath($app, $image) { + $cache = $this->cacheFactory->create('imagePath'); + $cacheKey = $app.'-'.$image; + if($key = $cache->get($cacheKey)) { + return $key; + } + // Read the selected theme from the config file $theme = \OC_Util::getTheme(); @@ -120,33 +130,39 @@ class URLGenerator implements IURLGenerator { $basename = substr(basename($image),0,-4); // Check if the app is in the app folder + $path = ''; if (file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$image")) { - return \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image"; + $path = \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image"; } elseif (!file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$basename.svg") && file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$basename.png")) { - return \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$basename.png"; + $path = \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$basename.png"; } elseif (file_exists(\OC_App::getAppPath($app) . "/img/$image")) { - return \OC_App::getAppWebPath($app) . "/img/$image"; + $path = \OC_App::getAppWebPath($app) . "/img/$image"; } elseif (!file_exists(\OC_App::getAppPath($app) . "/img/$basename.svg") && file_exists(\OC_App::getAppPath($app) . "/img/$basename.png")) { - return \OC_App::getAppPath($app) . "/img/$basename.png"; + $path = \OC_App::getAppPath($app) . "/img/$basename.png"; } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) { - return \OC::$WEBROOT . "/themes/$theme/$app/img/$image"; + $path = \OC::$WEBROOT . "/themes/$theme/$app/img/$image"; } elseif (!empty($app) and (!file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$basename.svg") && file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$basename.png"))) { - return \OC::$WEBROOT . "/themes/$theme/$app/img/$basename.png"; + $path = \OC::$WEBROOT . "/themes/$theme/$app/img/$basename.png"; } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/$app/img/$image")) { - return \OC::$WEBROOT . "/$app/img/$image"; + $path = \OC::$WEBROOT . "/$app/img/$image"; } elseif (!empty($app) and (!file_exists(\OC::$SERVERROOT . "/$app/img/$basename.svg") && file_exists(\OC::$SERVERROOT . "/$app/img/$basename.png"))) { - return \OC::$WEBROOT . "/$app/img/$basename.png"; + $path = \OC::$WEBROOT . "/$app/img/$basename.png"; } elseif (file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$image")) { - return \OC::$WEBROOT . "/themes/$theme/core/img/$image"; + $path = \OC::$WEBROOT . "/themes/$theme/core/img/$image"; } elseif (!file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.svg") && file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.png")) { - return \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png"; + $path = \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png"; } elseif (file_exists(\OC::$SERVERROOT . "/core/img/$image")) { - return \OC::$WEBROOT . "/core/img/$image"; + $path = \OC::$WEBROOT . "/core/img/$image"; + } + + if($path !== '') { + $cache->set($cacheKey, $path); + return $path; } else { throw new RuntimeException('image not found: image:' . $image . ' webroot:' . \OC::$WEBROOT . ' serverroot:' . \OC::$SERVERROOT); } diff --git a/lib/private/user/backend.php b/lib/private/user/backend.php index 5e0eef4771a..8a7a4c6e4a4 100644 --- a/lib/private/user/backend.php +++ b/lib/private/user/backend.php @@ -52,8 +52,6 @@ define('OC_USER_BACKEND_COUNT_USERS', 1 << 28); /** * Abstract base class for user management. Provides methods for querying backend * capabilities. - * - * Subclass this for your own backends, and see OC_User_Example for descriptions */ abstract class OC_User_Backend implements OC_User_Interface { /** diff --git a/lib/private/user/example.php b/lib/private/user/example.php deleted file mode 100644 index db21d6f9e52..00000000000 --- a/lib/private/user/example.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/** - * ownCloud - * - * @author Frank Karlitschek - * @copyright 2012 Frank Karlitschek frank@owncloud.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -/** - * abstract reference class for user management - * this class should only be used as a reference for method signatures and their descriptions - */ -abstract class OC_User_Example extends OC_User_Backend { - /** - * Create a new user - * @param string $uid The username of the user to create - * @param string $password The password of the new user - * @return bool - * - * Creates a new user. Basic checking of username is done in OC_User - * itself, not in its subclasses. - */ - abstract public function createUser($uid, $password); - - /** - * Set password - * @param string $uid The username - * @param string $password The new password - * @return bool - * - * Change the password of a user - */ - abstract public function setPassword($uid, $password); - - /** - * Check if the password is correct - * @param string $uid The username - * @param string $password The password - * @return string - * - * Check if the password is correct without logging in the user - * returns the user id or false - */ - abstract public function checkPassword($uid, $password); - - /** - * get the user's home directory - * @param string $uid The username - * @return string - * - * get the user's home directory - * returns the path or false - */ - abstract public function getHome($uid); -} diff --git a/lib/private/user/http.php b/lib/private/user/http.php deleted file mode 100644 index 8375c4e1e22..00000000000 --- a/lib/private/user/http.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -/** -* ownCloud -* -* @author Frank Karlitschek -* @copyright 2012 Robin Appelman icewind@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -/** - * user backend using http auth requests - */ -class OC_User_HTTP extends OC_User_Backend implements \OCP\IUserBackend { - /** - * split http://user@host/path into a user and url part - * @param string $url - * @return array - */ - private function parseUrl($url) { - $parts=parse_url($url); - $url=$parts['scheme'].'://'.$parts['host']; - if(isset($parts['port'])) { - $url.=':'.$parts['port']; - } - $url.=$parts['path']; - if(isset($parts['query'])) { - $url.='?'.$parts['query']; - } - return array($parts['user'], $url); - - } - - /** - * check if an url is a valid login - * @param string $url - * @return boolean - */ - private function matchUrl($url) { - return ! is_null(parse_url($url, PHP_URL_USER)); - } - - /** - * Check if the password is correct - * @param string $uid The username - * @param string $password The password - * @return string - * - * Check if the password is correct without logging in the user - * returns the user id or false - */ - public function checkPassword($uid, $password) { - if(!$this->matchUrl($uid)) { - return false; - } - list($user, $url)=$this->parseUrl($uid); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_USERPWD, $user.':'.$password); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - curl_setopt($ch, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - - curl_exec($ch); - - $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); - - curl_close($ch); - - if($status === 200) { - return $uid; - } - - return false; - } - - /** - * check if a user exists - * @param string $uid the username - * @return boolean - */ - public function userExists($uid) { - return $this->matchUrl($uid); - } - - /** - * get the user's home directory - * @param string $uid the username - * @return string|false - */ - public function getHome($uid) { - if($this->userExists($uid)) { - return OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ) . '/' . $uid; - }else{ - return false; - } - } - - /** - * Backend name to be shown in user management - * @return string the name of the backend to be shown - */ - public function getBackendName(){ - return 'HTTP'; - } -} diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index 85abd001ca8..99619bcba3a 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -103,7 +103,7 @@ class Manager extends PublicEmitter implements IUserManager { * get a user by user id * * @param string $uid - * @return \OC\User\User + * @return \OC\User\User|null Either the user or null if the specified user does not exist */ public function get($uid) { if (isset($this->cachedUsers[$uid])) { //check the cache first to prevent having to loop over the backends diff --git a/lib/private/util.php b/lib/private/util.php index 11366d450a9..a048996da6e 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -98,6 +98,14 @@ class OC_Util { return false; } + \OC\Files\Filesystem::addStorageWrapper('mount_options', function($mountPoint, \OCP\Files\Storage $storage, \OCP\Files\Mount\IMountPoint $mount) { + if($storage->instanceOfStorage('\OC\Files\Storage\Common')) { + /** @var \OC\Files\Storage\Common $storage */ + $storage->setMountOptions($mount->getOptions()); + } + return $storage; + }); + //if we aren't logged in, there is no use to set up the filesystem if ($user != "") { \OC\Files\Filesystem::addStorageWrapper('oc_quota', function ($mountPoint, $storage) { @@ -127,9 +135,6 @@ class OC_Util { //jail the user into his "home" directory \OC\Files\Filesystem::init($user, $userDir); - $fileOperationProxy = new OC_FileProxy_FileOperations(); - OC_FileProxy::register($fileOperationProxy); - //trigger creation of user home and /files folder \OC::$server->getUserFolder($user); diff --git a/lib/public/app.php b/lib/public/app.php index bef4e96ae02..736c2b64c7d 100644 --- a/lib/public/app.php +++ b/lib/public/app.php @@ -49,8 +49,6 @@ class App { /** * Adds an entry to the navigation - * @param array $data containing the data - * @return boolean * * This function adds a new entry to the navigation visible to users. $data * is an associative array. @@ -62,10 +60,17 @@ class App { * The following keys are optional: * - icon: path to the icon of the app * - order: integer, that influences the position of your application in - * the navigation. Lower values come first. + * the navigation. Lower values come first. + * + * @param array $data containing the data + * @return boolean + * + * @deprecated Use \OC::$server->getNavigationManager()->add() instead to + * register a closure, this helps to speed up all requests against ownCloud */ - public static function addNavigationEntry( $data ) { - return \OC_App::addNavigationEntry( $data ); + public static function addNavigationEntry($data) { + \OC::$server->getNavigationManager()->add($data); + return true; } /** @@ -76,6 +81,8 @@ class App { * This function sets a navigation entry as active and removes the 'active' * property from all other entries. The templates can use this for * highlighting the current position of the user. + * + * @deprecated Use \OC::$server->getNavigationManager()->setActiveEntry() instead */ public static function setActiveNavigationEntry( $id ) { return \OC_App::setActiveNavigationEntry( $id ); diff --git a/lib/public/appframework/db/mapper.php b/lib/public/appframework/db/mapper.php index 5143547c8e8..9a5d6e819b9 100644 --- a/lib/public/appframework/db/mapper.php +++ b/lib/public/appframework/db/mapper.php @@ -26,7 +26,8 @@ namespace OCP\AppFramework\Db; -use \OCP\IDBConnection; +use OCP\IDBConnection; +use OCP\IDb; /** @@ -183,6 +184,31 @@ abstract class Mapper { return $entity; } + /** + * Checks if an array is associative + * @param array $array + * @return bool true if associative + */ + private function isAssocArray(array $array) { + return array_values($array) !== $array; + } + + /** + * Returns the correct PDO constant based on the value type + * @param $value + * @return PDO constant + */ + private function getPDOType($value) { + switch (gettype($value)) { + case 'integer': + return \PDO::PARAM_INT; + case 'boolean': + return \PDO::PARAM_BOOL; + default: + return \PDO::PARAM_STR; + } + } + /** * Runs an sql query @@ -193,32 +219,37 @@ abstract class Mapper { * @return \PDOStatement the database query result */ protected function execute($sql, array $params=[], $limit=null, $offset=null){ - $query = $this->db->prepare($sql, $limit, $offset); - - $index = 1; // bindParam is 1 indexed - foreach($params as $param) { - - switch (gettype($param)) { - case 'integer': - $pdoConstant = \PDO::PARAM_INT; - break; - - case 'boolean': - $pdoConstant = \PDO::PARAM_BOOL; - break; + if ($this->db instanceof IDb) { + $query = $this->db->prepareQuery($sql, $limit, $offset); + } else { + $query = $this->db->prepare($sql, $limit, $offset); + } - default: - $pdoConstant = \PDO::PARAM_STR; - break; + if ($this->isAssocArray($params)) { + foreach ($params as $key => $param) { + $pdoConstant = $this->getPDOType($param); + $query->bindValue($key, $param, $pdoConstant); } + } else { + $index = 1; // bindParam is 1 indexed + foreach ($params as $param) { + $pdoConstant = $this->getPDOType($param); + $query->bindValue($index, $param, $pdoConstant); + $index++; + } + } - $query->bindValue($index, $param, $pdoConstant); + $result = $query->execute(); - $index++; + // this is only for backwards compatibility reasons and can be removed + // in owncloud 10. IDb returns a StatementWrapper from execute, PDO, + // Doctrine and IDbConnection don't so this needs to be done in order + // to stay backwards compatible for the things that rely on the + // StatementWrapper being returned + if ($result instanceof \OC_DB_StatementWrapper) { + return $result; } - $query->execute(); - return $query; } diff --git a/lib/public/db.php b/lib/public/db.php index e8fc817106e..595ecd66bdc 100644 --- a/lib/public/db.php +++ b/lib/public/db.php @@ -48,24 +48,18 @@ class DB { } /** - * Insert a row if a matching row doesn't exists. - * @param string $table The optional table name (will replace *PREFIX*) and add sequence suffix - * @param array $input - * - * The input array if in the form: + * Insert a row if the matching row does not exists. * - * array ( 'id' => array ( 'value' => 6, - * 'key' => true - * ), - * 'name' => array ('value' => 'Stoyan'), - * 'family' => array ('value' => 'Stefanov'), - * 'birth_date' => array ('value' => '1975-06-20') - * ); - * @return bool + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException * */ - public static function insertIfNotExist($table, $input) { - return(\OC_DB::insertIfNotExist($table, $input)); + public static function insertIfNotExist($table, $input, array $compare = null) { + return \OC::$server->getDatabaseConnection()->insertIfNotExist($table, $input, $compare); } /** diff --git a/lib/private/fileproxy/fileoperations.php b/lib/public/files/filenametoolongexception.php index b2ff2e7e5e9..02686f29e4e 100644 --- a/lib/private/fileproxy/fileoperations.php +++ b/lib/public/files/filenametoolongexception.php @@ -2,8 +2,8 @@ /** * ownCloud * - * @author Bjoern Schiessle - * @copyright 2012 Bjoern Schiessle <schiessle@owncloud.com> + * @author Thomas Müller + * @copyright 2013 Thomas Müller deepdiver@owncloud.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -21,17 +21,14 @@ */ /** - * check if standard file operations + * Public interface of ownCloud for apps to use. + * Files/ReservedWordException class */ -class OC_FileProxy_FileOperations extends OC_FileProxy{ - static $rootView; +// 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; - public function premkdir($path) { - if(!self::$rootView) { - self::$rootView = new \OC\Files\View(''); - } - return !self::$rootView->file_exists($path); - } +class FileNameTooLongException extends InvalidPathException { } diff --git a/lib/public/files/mount/imountpoint.php b/lib/public/files/mount/imountpoint.php index af7819ae160..2ec0cca1dce 100644 --- a/lib/public/files/mount/imountpoint.php +++ b/lib/public/files/mount/imountpoint.php @@ -64,4 +64,11 @@ interface IMountPoint { * @return mixed */ public function getOption($name, $default); + + /** + * Get all options for the mount + * + * @return array + */ + public function getOptions(); } diff --git a/lib/public/files/storage/istoragefactory.php b/lib/public/files/storage/istoragefactory.php index 50c844af2e6..7d4fa55e418 100644 --- a/lib/public/files/storage/istoragefactory.php +++ b/lib/public/files/storage/istoragefactory.php @@ -7,6 +7,7 @@ */ namespace OCP\Files\Storage; +use OCP\Files\Mount\IMountPoint; /** * Creates storage instances and manages and applies storage wrappers @@ -25,10 +26,10 @@ interface IStorageFactory { public function addStorageWrapper($wrapperName, $callback); /** - * @param string|boolean $mountPoint + * @param \OCP\Files\Mount\IMountPoint $mountPoint * @param string $class * @param array $arguments * @return \OCP\Files\Storage */ - public function getInstance($mountPoint, $class, $arguments); + public function getInstance(IMountPoint $mountPoint, $class, $arguments); } diff --git a/lib/public/iavatar.php b/lib/public/iavatar.php index 8f432c23fb8..984fe1075b4 100644 --- a/lib/public/iavatar.php +++ b/lib/public/iavatar.php @@ -16,7 +16,7 @@ interface IAvatar { /** * get the users avatar * @param int $size 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 + * @return boolean|\OCP\IImage containing the avatar or false if there's no image */ function get($size = 64); @@ -29,7 +29,7 @@ interface IAvatar { /** * sets the users avatar - * @param \OC_Image|resource|string $data OC_Image, imagedata or path to set a new avatar + * @param \OCP\IImage|resource|string $data An image object, 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 \OC\NotSquareException if the image is not square diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php index 0d3274d90eb..38f5c7e2e59 100644 --- a/lib/public/idbconnection.php +++ b/lib/public/idbconnection.php @@ -77,24 +77,17 @@ interface IDBConnection { public function lastInsertId($table = null); /** - * Insert a row if a matching row doesn't exists. - * @param string $table The table name (will replace *PREFIX*) to perform the replace on. - * @param array $input - * @throws \OC\HintException + * Insert a row if the matching row does not exists. * - * The input array if in the form: - * - * array ( 'id' => array ( 'value' => 6, - * 'key' => true - * ), - * 'name' => array ('value' => 'Stoyan'), - * 'family' => array ('value' => 'Stefanov'), - * 'birth_date' => array ('value' => '1975-06-20') - * ); - * @return bool - * - */ - public function insertIfNotExist($table, $input); + * @param string $table The table name (will replace *PREFIX* with the actual prefix) + * @param array $input data that should be inserted into the table (column name => value) + * @param array|null $compare List of values that should be checked for "if not exists" + * If this is null or an empty array, all keys of $input will be compared + * Please note: text fields (clob) must not be used in the compare array + * @return int number of inserted rows + * @throws \Doctrine\DBAL\DBALException + */ + public function insertIfNotExist($table, $input, array $compare = null); /** * Start a transaction diff --git a/lib/public/iimage.php b/lib/public/iimage.php new file mode 100644 index 00000000000..01d8e101330 --- /dev/null +++ b/lib/public/iimage.php @@ -0,0 +1,146 @@ +<?php +/** + * ownCloud + * + * @author Joas Schilling + * @copyright 2015 Joas Schilling nickvergessen@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP; + +/** + * Class for basic image manipulation + */ +interface IImage { + /** + * Determine whether the object contains an image resource. + * + * @return bool + */ + public function valid(); + + /** + * Returns the MIME type of the image or an empty string if no image is loaded. + * + * @return string + */ + public function mimeType(); + + /** + * Returns the width of the image or -1 if no image is loaded. + * + * @return int + */ + public function width(); + + /** + * Returns the height of the image or -1 if no image is loaded. + * + * @return int + */ + public function height(); + + /** + * Returns the width when the image orientation is top-left. + * + * @return int + */ + public function widthTopLeft(); + + /** + * Returns the height when the image orientation is top-left. + * + * @return int + */ + public function heightTopLeft(); + + /** + * Outputs the image. + * + * @param string $mimeType + * @return bool + */ + public function show($mimeType = null); + + /** + * Saves the image. + * + * @param string $filePath + * @param string $mimeType + * @return bool + */ + public function save($filePath = null, $mimeType = null); + + /** + * @return resource Returns the image resource in any. + */ + public function resource(); + + /** + * @return string Returns the raw image data. + */ + public function data(); + + /** + * (I'm open for suggestions on better method name ;) + * Get the orientation based on EXIF data. + * + * @return int The orientation or -1 if no EXIF data is available. + */ + public function getOrientation(); + + /** + * (I'm open for suggestions on better method name ;) + * Fixes orientation based on EXIF data. + * + * @return bool. + */ + public function fixOrientation(); + + /** + * Resizes the image preserving ratio. + * + * @param integer $maxSize The maximum size of either the width or height. + * @return bool + */ + public function resize($maxSize); + + /** + * @param int $width + * @param int $height + * @return bool + */ + public function preciseResize($width, $height); + + /** + * Crops the image to the middle square. If the image is already square it just returns. + * + * @param int $size maximum size for the result (optional) + * @return bool for success or failure + */ + public function centerCrop($size = 0); + + /** + * Crops the image from point $x$y with dimension $wx$h. + * + * @param int $x Horizontal position + * @param int $y Vertical position + * @param int $w Width + * @param int $h Height + * @return bool for success or failure + */ + public function crop($x, $y, $w, $h); + + /** + * Resizes the image to fit within a boundary while preserving ratio. + * + * @param integer $maxWidth + * @param integer $maxHeight + * @return bool + */ + public function fitIn($maxWidth, $maxHeight); +} diff --git a/lib/public/inavigationmanager.php b/lib/public/inavigationmanager.php index 9497d3fd08e..9e0e6826454 100644 --- a/lib/public/inavigationmanager.php +++ b/lib/public/inavigationmanager.php @@ -36,10 +36,13 @@ namespace OCP; interface INavigationManager { /** * Creates a new navigation entry - * @param array $entry containing: id, name, order, icon and href key + * + * @param array|\Closure $entry Array containing: id, name, order, icon and href key + * The use of a closure is preferred, because it will avoid + * loading the routing of your app, unless required. * @return void */ - public function add(array $entry); + public function add($entry); /** * Sets the current navigation entry of the currently running app diff --git a/lib/public/ipreview.php b/lib/public/ipreview.php index cc756ef80d3..202b0d03948 100644 --- a/lib/public/ipreview.php +++ b/lib/public/ipreview.php @@ -36,8 +36,30 @@ namespace OCP; /** * This class provides functions to render and show thumbnails and previews of files */ -interface IPreview -{ +interface IPreview { + /** + * In order to improve lazy loading a closure can be registered which will be + * called in case preview providers are actually requested + * + * $callable has to return an instance of \OCP\Preview\IProvider + * + * @param string $mimeTypeRegex Regex with the mime types that are supported by this provider + * @param \Closure $callable + * @return void + */ + public function registerProvider($mimeTypeRegex, \Closure $callable); + + /** + * Get all providers + * @return array + */ + public function getProviders(); + + /** + * Does the manager have any providers + * @return bool + */ + public function hasProviders(); /** * Return a preview of a file @@ -45,9 +67,9 @@ interface IPreview * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image * @param boolean $scaleUp Scale smaller images up to the thumbnail size or not. Might look ugly - * @return \OCP\Image + * @return \OCP\IImage */ - function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false); + public function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false); /** @@ -55,7 +77,7 @@ interface IPreview * @param string $mimeType * @return boolean */ - function isMimeSupported($mimeType = '*'); + public function isMimeSupported($mimeType = '*'); /** * Check if a preview can be generated for a file @@ -63,5 +85,5 @@ interface IPreview * @param \OCP\Files\FileInfo $file * @return bool */ - function isAvailable($file); + public function isAvailable(\OCP\Files\FileInfo $file); } diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index ec23cc52345..20345e61212 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -318,9 +318,15 @@ interface IServerContainer { * @return \bantu\IniGetWrapper\IniGetWrapper */ function getIniWrapper(); - /** * @return \OCP\Command\IBus */ function getCommandBus(); + + /** + * Creates a new mailer + * + * @return \OCP\Mail\IMailer + */ + function getMailer(); } diff --git a/lib/public/iusermanager.php b/lib/public/iusermanager.php index 1691aee8e7d..e2079ef8cc2 100644 --- a/lib/public/iusermanager.php +++ b/lib/public/iusermanager.php @@ -53,7 +53,7 @@ interface IUserManager { * get a user by user id * * @param string $uid - * @return \OCP\IUser + * @return \OCP\IUser|null Either the user or null if the specified user does not exist */ public function get($uid); diff --git a/lib/public/mail/imailer.php b/lib/public/mail/imailer.php new file mode 100644 index 00000000000..dc6fe5ba869 --- /dev/null +++ b/lib/public/mail/imailer.php @@ -0,0 +1,57 @@ +<?php +/** + * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Mail; +use OC\Mail\Message; + +/** + * Class IMailer provides some basic functions to create a mail message that can be used in combination with + * \OC\Mail\Message. + * + * Example usage: + * + * $mailer = \OC::$server->getMailer(); + * $message = $mailer->createMessage(); + * $message->setSubject('Your Subject'); + * $message->setFrom(array('cloud@domain.org' => 'ownCloud Notifier'); + * $message->setTo(array('recipient@domain.org' => 'Recipient'); + * $message->setBody('The message text'); + * $mailer->send($message); + * + * This message can then be passed to send() of \OC\Mail\Mailer + * + * @package OCP\Mail + */ +interface IMailer { + /** + * Creates a new message object that can be passed to send() + * + * @return Message + */ + public function createMessage(); + + /** + * Send the specified message. Also sets the from address to the value defined in config.php + * if no-one has been passed. + * + * @param Message $message Message to send + * @return string[] Array with failed recipients. Be aware that this depends on the used mail backend and + * therefore should be considered + * @throws \Exception In case it was not possible to send the message. (for example if an invalid mail address + * has been supplied.) + */ + public function send(Message $message); + + /** + * Checks if an e-mail address is valid + * + * @param string $email Email address to be validated + * @return bool True if the mail address is valid, false otherwise + */ + public function validateMailAddress($email); +} diff --git a/lib/public/preview/iprovider.php b/lib/public/preview/iprovider.php new file mode 100644 index 00000000000..4318ecd37ac --- /dev/null +++ b/lib/public/preview/iprovider.php @@ -0,0 +1,39 @@ +<?php +/** + * ownCloud + * + * @author Joas Schilling + * @copyright 2015 Joas Schilling nickvergessen@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +namespace OCP\Preview; + +interface IProvider { + /** + * @return string Regex with the mimetypes that are supported by this provider + */ + public function getMimeType(); + + /** + * Check if a preview can be generated for $path + * + * @param \OCP\Files\FileInfo $file + * @return bool + */ + public function isAvailable(\OCP\Files\FileInfo $file); + + /** + * get thumbnail for file at path $path + * + * @param string $path Path of file + * @param int $maxX The maximum X size of the thumbnail. It can be smaller depending on the shape of the image + * @param int $maxY The maximum Y size of the thumbnail. It can be smaller depending on the shape of the image + * @param bool $scalingup Disable/Enable upscaling of previews + * @param \OC\Files\View $fileview fileview object of user folder + * @return bool|\OCP\IImage false if no preview was generated + */ + public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview); +} diff --git a/lib/public/util.php b/lib/public/util.php index aa6cd5ba012..5efdcc55de4 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -63,12 +63,40 @@ class Util { * @param string $ccaddress * @param string $ccname * @param string $bcc + * @deprecated Use \OCP\Mail\IMailer instead */ - public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, + public static function sendMail($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html = 0, $altbody = '', $ccaddress = '', $ccname = '', $bcc = '') { - // call the internal mail class - \OC_MAIL::send($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, - $html, $altbody, $ccaddress, $ccname, $bcc); + $mailer = \OC::$server->getMailer(); + $message = $mailer->createMessage(); + $message->setTo([$toaddress => $toname]); + $message->setSubject($subject); + $message->setPlainBody($mailtext); + $message->setFrom([$fromaddress => $fromname]); + if($html === 1) { + $message->setHTMLBody($altbody); + } + + if($altbody === '') { + $message->setHTMLBody($mailtext); + $message->setPlainBody(''); + } else { + $message->setHtmlBody($mailtext); + $message->setPlainBody($altbody); + } + + if(!empty($ccaddress)) { + if(!empty($ccname)) { + $message->setCc([$ccaddress => $ccname]); + } else { + $message->setCc([$ccaddress]); + } + } + if(!empty($bcc)) { + $message->setBcc([$bcc]); + } + + $mailer->send($message); } /** @@ -275,7 +303,8 @@ class Util { $host_name = \OC_Config::getValue('mail_domain', $host_name); $defaultEmailAddress = $user_part.'@'.$host_name; - if (\OC_Mail::validateAddress($defaultEmailAddress)) { + $mailer = \OC::$server->getMailer(); + if ($mailer->validateMailAddress($defaultEmailAddress)) { return $defaultEmailAddress; } diff --git a/lib/repair/repairmimetypes.php b/lib/repair/repairmimetypes.php index 06cd144bff4..e9ce4c73a42 100644 --- a/lib/repair/repairmimetypes.php +++ b/lib/repair/repairmimetypes.php @@ -17,7 +17,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { public function getName() { return 'Repair mime types'; } - + private static function existsStmt() { return \OC_DB::prepare(' SELECT count(`mimetype`) @@ -51,14 +51,14 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { ) WHERE `mimetype` = ? '); } - + private static function deleteStmt() { return \OC_DB::prepare(' DELETE FROM `*PREFIX*mimetypes` WHERE `id` = ? '); - } - + } + private static function updateByNameStmt() { return \OC_DB::prepare(' UPDATE `*PREFIX*filecache` @@ -66,10 +66,10 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ? - ) WHERE `name` LIKE ? + ) WHERE `name` ILIKE ? '); } - + private function repairMimetypes($wrongMimetypes) { foreach ($wrongMimetypes as $wrong => $correct) { // do we need to remove a wrong mimetype? @@ -81,8 +81,8 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { $result = \OC_DB::executeAudited(self::existsStmt(), array($correct)); $exists = $result->fetchOne(); - if ( ! is_null($correct) ) { - if ( ! $exists ) { + if (!is_null($correct)) { + if (!$exists) { // insert mimetype \OC_DB::executeAudited(self::insertStmt(), array($correct)); } @@ -90,27 +90,27 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { // change wrong mimetype to correct mimetype in filecache \OC_DB::executeAudited(self::updateWrongStmt(), array($correct, $wrongId)); } - + // delete wrong mimetype \OC_DB::executeAudited(self::deleteStmt(), array($wrongId)); } } } - + private function updateMimetypes($updatedMimetypes) { - - foreach ($updatedMimetypes as $extension => $mimetype ) { + + foreach ($updatedMimetypes as $extension => $mimetype) { $result = \OC_DB::executeAudited(self::existsStmt(), array($mimetype)); $exists = $result->fetchOne(); - if ( ! $exists ) { + if (!$exists) { // insert mimetype \OC_DB::executeAudited(self::insertStmt(), array($mimetype)); } // change mimetype for files with x extension - \OC_DB::executeAudited(self::updateByNameStmt(), array($mimetype, '%.'.$extension)); + \OC_DB::executeAudited(self::updateByNameStmt(), array($mimetype, '%.' . $extension)); } } @@ -132,9 +132,9 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { // separate doc from docx etc self::updateMimetypes($updatedMimetypes); - + } - + private function fixApkMimeType() { $updatedMimetypes = array( 'apk' => 'application/vnd.android.package-archive', @@ -142,7 +142,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { self::updateMimetypes($updatedMimetypes); } - + private function fixFontsMimeTypes() { // update wrong mimetypes $wrongMimetypes = array( @@ -152,7 +152,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { ); self::repairMimetypes($wrongMimetypes); - + $updatedMimetypes = array( 'ttf' => 'application/font-sfnt', 'otf' => 'application/font-sfnt', @@ -161,7 +161,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { self::updateMimetypes($updatedMimetypes); } - + private function fixPostscriptMimeType() { $updatedMimetypes = array( 'eps' => 'application/postscript', @@ -171,6 +171,39 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { self::updateMimetypes($updatedMimetypes); } + private function introduceRawMimeType() { + $updatedMimetypes = array( + 'arw' => 'image/x-dcraw', + 'cr2' => 'image/x-dcraw', + 'dcr' => 'image/x-dcraw', + 'dng' => 'image/x-dcraw', + 'erf' => 'image/x-dcraw', + 'iiq' => 'image/x-dcraw', + 'k25' => 'image/x-dcraw', + 'kdc' => 'image/x-dcraw', + 'mef' => 'image/x-dcraw', + 'nef' => 'image/x-dcraw', + 'orf' => 'image/x-dcraw', + 'pef' => 'image/x-dcraw', + 'raf' => 'image/x-dcraw', + 'rw2' => 'image/x-dcraw', + 'srf' => 'image/x-dcraw', + 'sr2' => 'image/x-dcraw', + 'xrf' => 'image/x-dcraw', + ); + + self::updateMimetypes($updatedMimetypes); + } + + private function introduce3dImagesMimeType() { + $updatedMimetypes = array( + 'jps' => 'image/jpeg', + 'mpo' => 'image/jpeg', + ); + + self::updateMimetypes($updatedMimetypes); + } + /** * Fix mime types */ @@ -178,17 +211,25 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { if ($this->fixOfficeMimeTypes()) { $this->emit('\OC\Repair', 'info', array('Fixed office mime types')); } - + if ($this->fixApkMimeType()) { $this->emit('\OC\Repair', 'info', array('Fixed APK mime type')); } - + if ($this->fixFontsMimeTypes()) { $this->emit('\OC\Repair', 'info', array('Fixed fonts mime types')); } - + if ($this->fixPostscriptMimeType()) { $this->emit('\OC\Repair', 'info', array('Fixed Postscript mime types')); } + + if ($this->introduceRawMimeType()) { + $this->emit('\OC\Repair', 'info', array('Fixed Raw mime types')); + } + + if ($this->introduce3dImagesMimeType()) { + $this->emit('\OC\Repair', 'info', array('Fixed 3D images mime types')); + } } -}
\ No newline at end of file +} |