diff options
Diffstat (limited to 'lib')
30 files changed, 334 insertions, 50 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index c85b22972dc..09d5159369e 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -1161,6 +1161,7 @@ return array( 'OC\\Files\\Storage\\Temporary' => $baseDir . '/lib/private/Files/Storage/Temporary.php', 'OC\\Files\\Storage\\Wrapper\\Availability' => $baseDir . '/lib/private/Files/Storage/Wrapper/Availability.php', 'OC\\Files\\Storage\\Wrapper\\Encoding' => $baseDir . '/lib/private/Files/Storage/Wrapper/Encoding.php', + 'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php', 'OC\\Files\\Storage\\Wrapper\\Encryption' => $baseDir . '/lib/private/Files/Storage/Wrapper/Encryption.php', 'OC\\Files\\Storage\\Wrapper\\Jail' => $baseDir . '/lib/private/Files/Storage/Wrapper/Jail.php', 'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => $baseDir . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index c3e5e8d5dd1..932de0b7858 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -1190,6 +1190,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Files\\Storage\\Temporary' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Temporary.php', 'OC\\Files\\Storage\\Wrapper\\Availability' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Availability.php', 'OC\\Files\\Storage\\Wrapper\\Encoding' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Encoding.php', + 'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php', 'OC\\Files\\Storage\\Wrapper\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Encryption.php', 'OC\\Files\\Storage\\Wrapper\\Jail' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Jail.php', 'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php', diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 5c2eab060d7..6d496d9772c 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -193,7 +193,7 @@ OC.L10N.register( "Oct." : "říj.", "Nov." : "list.", "Dec." : "pro.", - "The user limit has been reached and the user was not created." : "Bylo dosaženo limitu uživatelů a uživatel nebyl vytvořen.", + "The user limit has been reached and the user was not created." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen.", "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Pouze následující znaky jsou povoleny pro uživatelské jméno: „a-z“, „A-Z“, „0-9“, a „_.@-'“", "A valid username must be provided" : "Je třeba zadat platné uživatelské jméno", "Username contains whitespace at the beginning or at the end" : "Uživatelské jméno je chybné – na jeho začátku či konci se nachází prázdný znak (mezera, tabulátor, atp.)", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index 593b3af46a5..adc20059018 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -191,7 +191,7 @@ "Oct." : "říj.", "Nov." : "list.", "Dec." : "pro.", - "The user limit has been reached and the user was not created." : "Bylo dosaženo limitu uživatelů a uživatel nebyl vytvořen.", + "The user limit has been reached and the user was not created." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen.", "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Pouze následující znaky jsou povoleny pro uživatelské jméno: „a-z“, „A-Z“, „0-9“, a „_.@-'“", "A valid username must be provided" : "Je třeba zadat platné uživatelské jméno", "Username contains whitespace at the beginning or at the end" : "Uživatelské jméno je chybné – na jeho začátku či konci se nachází prázdný znak (mezera, tabulátor, atp.)", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index c43109fe74e..97377b44c32 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -51,6 +51,7 @@ OC.L10N.register( "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen no válida", "Avatar image is not square" : "La imagen de avatar no es cuadrada", + "View profile" : "Ver perfil", "today" : "hoy", "tomorrow" : "mañana", "yesterday" : "ayer", @@ -90,6 +91,16 @@ OC.L10N.register( "Settings" : "Ajustes", "Log out" : "Cerrar sesión", "Users" : "Usuarios", + "Email" : "Correo electrónico", + "Phone" : "Teléfono", + "Twitter" : "Twitter", + "Website" : "Sitio web", + "Address" : "Dirección", + "Profile picture" : "Fotografía de perfil", + "About" : "Sobre", + "Full name" : "Nombre completo", + "Organisation" : "Organización", + "Role" : "Puesto", "Unknown user" : "Usuario desconocido", "Additional settings" : "Configuración adicional", "%s enter the database username and name." : "%s introduzca el nombre de usuario y la contraseña de la BBDD.", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index 4fb35a65eda..eeb51a0b24d 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -49,6 +49,7 @@ "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen no válida", "Avatar image is not square" : "La imagen de avatar no es cuadrada", + "View profile" : "Ver perfil", "today" : "hoy", "tomorrow" : "mañana", "yesterday" : "ayer", @@ -88,6 +89,16 @@ "Settings" : "Ajustes", "Log out" : "Cerrar sesión", "Users" : "Usuarios", + "Email" : "Correo electrónico", + "Phone" : "Teléfono", + "Twitter" : "Twitter", + "Website" : "Sitio web", + "Address" : "Dirección", + "Profile picture" : "Fotografía de perfil", + "About" : "Sobre", + "Full name" : "Nombre completo", + "Organisation" : "Organización", + "Role" : "Puesto", "Unknown user" : "Usuario desconocido", "Additional settings" : "Configuración adicional", "%s enter the database username and name." : "%s introduzca el nombre de usuario y la contraseña de la BBDD.", diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js index 1c77b242abf..cbe965dc685 100644 --- a/lib/l10n/fi.js +++ b/lib/l10n/fi.js @@ -9,6 +9,7 @@ OC.L10N.register( "Click the following button to confirm your email." : "Napsauta seuraavaa painiketta vahvistaaksesi sähköpostiosoitteesi.", "Click the following link to confirm your email." : "Napsauta seuraavaa linkkiä vahvistaaksesi sähköpostiosoitteesi.", "Confirm your email" : "Vahvista sähköpostiosoitteesi", + "Other activities" : "Muut toimet", "%1$s and %2$s" : "%1$s ja %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s ja %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ja %4$s", @@ -37,6 +38,7 @@ OC.L10N.register( "Unknown filetype" : "Tuntematon tiedostotyyppi", "Invalid image" : "Virheellinen kuva", "Avatar image is not square" : "Avatar-kuva ei ole neliö", + "View profile" : "Näytä profiili", "today" : "tänään", "tomorrow" : "huomenna", "yesterday" : "eilen", @@ -75,6 +77,20 @@ OC.L10N.register( "Settings" : "Asetukset", "Log out" : "Kirjaudu ulos", "Users" : "Käyttäjät", + "Email" : "Sähköposti", + "Mail %s" : "Lähetä sähköpostia %s", + "Phone" : "Puhelin", + "Call %s" : "Soita %s", + "Twitter" : "Twitter", + "View %s on Twitter" : "Näytä %s Twitterissä", + "Website" : "Verkkosivu", + "Visit %s" : "Käy sivustolla %s", + "Address" : "Osoite", + "Profile picture" : "Profiilikuva", + "About" : "Tietoja", + "Full name" : "Koko nimi", + "Organisation" : "Organisaatio", + "Role" : "Rooli", "Unknown user" : "Tuntematon käyttäjä", "Additional settings" : "Lisäasetukset", "%s enter the database username and name." : "%s anna tietokannan käyttäjätunnus ja nimi.", @@ -96,8 +112,11 @@ OC.L10N.register( "Sharing backend for %s not found" : "Jakamisen taustaosaa kohteelle %s ei löytynyt", "Open »%s«" : "Avaa »%s«", "You are not allowed to share %s" : "Oikeutesi eivät riitä kohteen %s jakamiseen.", + "Files cannot be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeuksilla", + "Files cannot be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", "Sharing is only allowed with group members" : "Jakaminen on sallittu vain ryhmäjäsenten kesken", + "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa", "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi", "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.", "Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.", @@ -148,6 +167,7 @@ OC.L10N.register( "Oct." : "Loka", "Nov." : "Marras", "Dec." : "Joulu", + "The user limit has been reached and the user was not created." : "Käyttäjäraja on tullut täyteen, joten käyttäjää ei luotu.", "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Vain seuraavat merkit ovat sallittuja käyttäjätunnuksessa: \"a-z\", \"A-Z\", \"0-9\" ja \"_.@-'\"", "A valid username must be provided" : "Anna kelvollinen käyttäjätunnus", "Username contains whitespace at the beginning or at the end" : "Käyttäjätunnus sisältää tyhjätilaa joko alussa tai lopussa", @@ -186,6 +206,7 @@ OC.L10N.register( "Your data directory must be an absolute path" : "Data-hakemiston tulee olla absoluuttinen polku", "Check the value of \"datadirectory\" in your configuration" : "Tarkista \"datadirectory\"-arvo asetuksistasi", "Your data directory is invalid" : "Datahakemistosi on virheellinen", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Varmista että datahakemiston juuressa on tiedosto nimeltä \".ocdata\".", "Action \"%s\" not supported or implemented." : "Toiminto \"%s\" ei ole tuettu tai sitä ei ole toteutettu.", "Could not obtain lock type %d on \"%s\"." : "Lukitustapaa %d ei saatu kohteelle \"%s\".", "Storage unauthorized. %s" : "Tallennustila ei ole valtuutettu. %s", @@ -196,6 +217,8 @@ OC.L10N.register( "This can usually be fixed by giving the webserver write access to the config directory" : "Tämän voi yleensä korjata antamalla http-palvelimelle kirjoitusoikeuden asetushakemistoon", "Can't create or write into the data directory %s" : "Ei voi luoda tai kirjoittaa data-hakemistoon %s", "Invalid Federated Cloud ID" : "Virheellinen federoidun pilven tunniste", + "Files can’t be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeuksilla", + "Files can’t be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", "Can't read file" : "Tiedostoa ei voi lukea" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json index 4311f4933cd..48bd81993d5 100644 --- a/lib/l10n/fi.json +++ b/lib/l10n/fi.json @@ -7,6 +7,7 @@ "Click the following button to confirm your email." : "Napsauta seuraavaa painiketta vahvistaaksesi sähköpostiosoitteesi.", "Click the following link to confirm your email." : "Napsauta seuraavaa linkkiä vahvistaaksesi sähköpostiosoitteesi.", "Confirm your email" : "Vahvista sähköpostiosoitteesi", + "Other activities" : "Muut toimet", "%1$s and %2$s" : "%1$s ja %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s ja %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s ja %4$s", @@ -35,6 +36,7 @@ "Unknown filetype" : "Tuntematon tiedostotyyppi", "Invalid image" : "Virheellinen kuva", "Avatar image is not square" : "Avatar-kuva ei ole neliö", + "View profile" : "Näytä profiili", "today" : "tänään", "tomorrow" : "huomenna", "yesterday" : "eilen", @@ -73,6 +75,20 @@ "Settings" : "Asetukset", "Log out" : "Kirjaudu ulos", "Users" : "Käyttäjät", + "Email" : "Sähköposti", + "Mail %s" : "Lähetä sähköpostia %s", + "Phone" : "Puhelin", + "Call %s" : "Soita %s", + "Twitter" : "Twitter", + "View %s on Twitter" : "Näytä %s Twitterissä", + "Website" : "Verkkosivu", + "Visit %s" : "Käy sivustolla %s", + "Address" : "Osoite", + "Profile picture" : "Profiilikuva", + "About" : "Tietoja", + "Full name" : "Koko nimi", + "Organisation" : "Organisaatio", + "Role" : "Rooli", "Unknown user" : "Tuntematon käyttäjä", "Additional settings" : "Lisäasetukset", "%s enter the database username and name." : "%s anna tietokannan käyttäjätunnus ja nimi.", @@ -94,8 +110,11 @@ "Sharing backend for %s not found" : "Jakamisen taustaosaa kohteelle %s ei löytynyt", "Open »%s«" : "Avaa »%s«", "You are not allowed to share %s" : "Oikeutesi eivät riitä kohteen %s jakamiseen.", + "Files cannot be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeuksilla", + "Files cannot be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", "Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä", "Sharing is only allowed with group members" : "Jakaminen on sallittu vain ryhmäjäsenten kesken", + "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa", "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi", "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.", "Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.", @@ -146,6 +165,7 @@ "Oct." : "Loka", "Nov." : "Marras", "Dec." : "Joulu", + "The user limit has been reached and the user was not created." : "Käyttäjäraja on tullut täyteen, joten käyttäjää ei luotu.", "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Vain seuraavat merkit ovat sallittuja käyttäjätunnuksessa: \"a-z\", \"A-Z\", \"0-9\" ja \"_.@-'\"", "A valid username must be provided" : "Anna kelvollinen käyttäjätunnus", "Username contains whitespace at the beginning or at the end" : "Käyttäjätunnus sisältää tyhjätilaa joko alussa tai lopussa", @@ -184,6 +204,7 @@ "Your data directory must be an absolute path" : "Data-hakemiston tulee olla absoluuttinen polku", "Check the value of \"datadirectory\" in your configuration" : "Tarkista \"datadirectory\"-arvo asetuksistasi", "Your data directory is invalid" : "Datahakemistosi on virheellinen", + "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Varmista että datahakemiston juuressa on tiedosto nimeltä \".ocdata\".", "Action \"%s\" not supported or implemented." : "Toiminto \"%s\" ei ole tuettu tai sitä ei ole toteutettu.", "Could not obtain lock type %d on \"%s\"." : "Lukitustapaa %d ei saatu kohteelle \"%s\".", "Storage unauthorized. %s" : "Tallennustila ei ole valtuutettu. %s", @@ -194,6 +215,8 @@ "This can usually be fixed by giving the webserver write access to the config directory" : "Tämän voi yleensä korjata antamalla http-palvelimelle kirjoitusoikeuden asetushakemistoon", "Can't create or write into the data directory %s" : "Ei voi luoda tai kirjoittaa data-hakemistoon %s", "Invalid Federated Cloud ID" : "Virheellinen federoidun pilven tunniste", + "Files can’t be shared with delete permissions" : "Tiedostoja ei voi jakaa poistamisoikeuksilla", + "Files can’t be shared with create permissions" : "Tiedostoja ei voi jakaa luomisoikeuksilla", "Can't read file" : "Tiedostoa ei voi lukea" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 07fa8f8449f..c18fffc65fa 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -8,6 +8,10 @@ OC.L10N.register( "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "De bestanden van app %1$szijn niet correct vervangen. Zorg ervoor dat de versie compatible is met de server.", "Sample configuration detected" : "Voorbeeld configuratie gevonden", "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" : "Er is gedetecteerd dat de voorbeeld configuratie is gekopieerd. Dit kan je installatie beschadigen en wordt dan ook niet ondersteund. Lees de documentatie voordat je wijzigingen aan config.php doorvoert", + "%s email verification" : "%s e-mail verificatie", + "Email verification" : "E-mail verificatie", + "Click the following button to confirm your email." : "Klik op de knop om je e-mail te bevestigen.", + "Click the following link to confirm your email." : "Klik op de volgende link om je e-mail te bevestigen.", "Confirm your email" : "Bevestig je e-mailadres", "Other activities" : "Andere activiteiten", "%1$s and %2$s" : "%1$s en %2$s", @@ -31,6 +35,7 @@ OC.L10N.register( "The following platforms are supported: %s" : "De volgende platforms worden ondersteund: %s", "Server version %s or higher is required." : "Serverversie %s of hoger vereist.", "Server version %s or lower is required." : "Serverversie %s of lager vereist.", + "Logged in user must be an admin, a sub admin or gotten special right to access this setting" : "Ingelogde gebruiken moet beheerder, sub-beheerder of gebruiker met speciale rechten om deze instelling te veranderen zijn", "Logged in user must be an admin or sub admin" : "Ingelogde gebruiker moet een beheerder of subbeheerder zijn", "Logged in user must be an admin" : "Ingelogde gebruiker moet een beheerder zijn", "Wiping of device %s has started" : "Leegmaken van toestel %sis gestart", @@ -49,6 +54,7 @@ OC.L10N.register( "Unknown filetype" : "Onbekend bestandsformaat", "Invalid image" : "Ongeldige afbeelding", "Avatar image is not square" : "Avatar afbeelding is niet vierkant", + "View profile" : "Bekijk profiel", "today" : "vandaag", "tomorrow" : "morgen", "yesterday" : "gisteren", @@ -88,6 +94,21 @@ OC.L10N.register( "Settings" : "Instellingen", "Log out" : "Uitloggen", "Users" : "Gebruikers", + "Email" : "E-mail", + "Mail %s" : "Mail %s", + "Phone" : "Telefoon", + "Call %s" : "Bel %s", + "Twitter" : "Twitter", + "View %s on Twitter" : "Bekijk %s op Twitter", + "Website" : "Website", + "Visit %s" : "Bezoek %s", + "Address" : "Adres", + "Profile picture" : "Profielafbeelding", + "About" : "Over", + "Full name" : "Volledige naam", + "Headline" : "Hoofdlijn", + "Organisation" : "Organisatie", + "Role" : "Rol", "Unknown user" : "Onbekende gebruiker", "Additional settings" : "Aanvullende instellingen", "%s enter the database username and name." : "%s voer de database gebruikersnaam en naam in .", @@ -115,9 +136,9 @@ OC.L10N.register( "Open »%s«" : "Open \"%s\"", "%1$s via %2$s" : "%1$s via %2$s", "You are not allowed to share %s" : "Je bent niet bevoegd om %s te delen", - "Cannot increase permissions of %s" : "Kan de rechten van %s niet verhogen.", - "Files cannot be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder permissies", - "Files cannot be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", + "Cannot increase permissions of %s" : "Kan de machtiging van %s niet verhogen.", + "Files cannot be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijdermachtigingen", + "Files cannot be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creëermachtigingen", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Kan de vervaldatum niet meer dan %s dag in de toekomst instellen","Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen"], "Sharing is only allowed with group members" : "Delen kan alleen met groepsleden", @@ -198,7 +219,7 @@ OC.L10N.register( "This can usually be fixed by giving the webserver write access to the apps directory or disabling the App Store in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de App Store te deactiveren in het configuratie bestand.", "Cannot create \"data\" directory" : "\"data\" map kan niet worden aangemaakt", "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dit kan hersteld worden door de root map schrijf rechten te geven op de webserver. Zie %s", - "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rechten kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Machtigingen kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.", "Setting locale to %s failed" : "Instellen taal op %s mislukte", "Please install one of these locales on your system and restart your webserver." : "Installeer één van de talen op je systeem en herstart je webserver.", "PHP module %s not installed." : "PHP module %s niet geïnstalleerd.", @@ -216,7 +237,7 @@ OC.L10N.register( "PostgreSQL >= 9 required" : "PostgreSQL >= 9 is vereist", "Please upgrade your database version" : "Werk je databaseversie bij", "Your data directory is readable by other users" : "Je datamap is leesbaar voor andere gebruikers", - "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de permissie in 0770 zodat de directory niet door andere gebruikers bekeken kan worden.", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de machtiging in 0770 zodat de directory niet door andere gebruikers bekeken kan worden.", "Your data directory must be an absolute path" : "Je datamap moet een absolute bestandslocatie hebben", "Check the value of \"datadirectory\" in your configuration" : "Controleer de waarde van \"datadirectory\" in je configuratie", "Your data directory is invalid" : "Je datamap is ongeldig", @@ -236,9 +257,9 @@ OC.L10N.register( "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Of, als je liever config.php alleen-lezen wilt houden, stel de optie \"config_is_read_only\" in op true.", "Can't create or write into the data directory %s" : "Kan niets creëren of wegschrijven in de datadirectory %s", "Invalid Federated Cloud ID" : "Ongeldige gefedereerde Cloud ID", - "Can’t increase permissions of %s" : "Kan niet meer rechten geven aan %s", - "Files can’t be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder permissies", - "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", + "Can’t increase permissions of %s" : "Kan niet meer machtigingen geven aan %s", + "Files can’t be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder machtiging", + "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' machtigingen", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", "Can't read file" : "Kan bestand niet lezen", "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de appstore te deactiveren in het configuratie bestand." diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index eb28aca6b18..7e57430f91a 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -6,6 +6,10 @@ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "De bestanden van app %1$szijn niet correct vervangen. Zorg ervoor dat de versie compatible is met de server.", "Sample configuration detected" : "Voorbeeld configuratie gevonden", "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" : "Er is gedetecteerd dat de voorbeeld configuratie is gekopieerd. Dit kan je installatie beschadigen en wordt dan ook niet ondersteund. Lees de documentatie voordat je wijzigingen aan config.php doorvoert", + "%s email verification" : "%s e-mail verificatie", + "Email verification" : "E-mail verificatie", + "Click the following button to confirm your email." : "Klik op de knop om je e-mail te bevestigen.", + "Click the following link to confirm your email." : "Klik op de volgende link om je e-mail te bevestigen.", "Confirm your email" : "Bevestig je e-mailadres", "Other activities" : "Andere activiteiten", "%1$s and %2$s" : "%1$s en %2$s", @@ -29,6 +33,7 @@ "The following platforms are supported: %s" : "De volgende platforms worden ondersteund: %s", "Server version %s or higher is required." : "Serverversie %s of hoger vereist.", "Server version %s or lower is required." : "Serverversie %s of lager vereist.", + "Logged in user must be an admin, a sub admin or gotten special right to access this setting" : "Ingelogde gebruiken moet beheerder, sub-beheerder of gebruiker met speciale rechten om deze instelling te veranderen zijn", "Logged in user must be an admin or sub admin" : "Ingelogde gebruiker moet een beheerder of subbeheerder zijn", "Logged in user must be an admin" : "Ingelogde gebruiker moet een beheerder zijn", "Wiping of device %s has started" : "Leegmaken van toestel %sis gestart", @@ -47,6 +52,7 @@ "Unknown filetype" : "Onbekend bestandsformaat", "Invalid image" : "Ongeldige afbeelding", "Avatar image is not square" : "Avatar afbeelding is niet vierkant", + "View profile" : "Bekijk profiel", "today" : "vandaag", "tomorrow" : "morgen", "yesterday" : "gisteren", @@ -86,6 +92,21 @@ "Settings" : "Instellingen", "Log out" : "Uitloggen", "Users" : "Gebruikers", + "Email" : "E-mail", + "Mail %s" : "Mail %s", + "Phone" : "Telefoon", + "Call %s" : "Bel %s", + "Twitter" : "Twitter", + "View %s on Twitter" : "Bekijk %s op Twitter", + "Website" : "Website", + "Visit %s" : "Bezoek %s", + "Address" : "Adres", + "Profile picture" : "Profielafbeelding", + "About" : "Over", + "Full name" : "Volledige naam", + "Headline" : "Hoofdlijn", + "Organisation" : "Organisatie", + "Role" : "Rol", "Unknown user" : "Onbekende gebruiker", "Additional settings" : "Aanvullende instellingen", "%s enter the database username and name." : "%s voer de database gebruikersnaam en naam in .", @@ -113,9 +134,9 @@ "Open »%s«" : "Open \"%s\"", "%1$s via %2$s" : "%1$s via %2$s", "You are not allowed to share %s" : "Je bent niet bevoegd om %s te delen", - "Cannot increase permissions of %s" : "Kan de rechten van %s niet verhogen.", - "Files cannot be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder permissies", - "Files cannot be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", + "Cannot increase permissions of %s" : "Kan de machtiging van %s niet verhogen.", + "Files cannot be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijdermachtigingen", + "Files cannot be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met creëermachtigingen", "Expiration date is in the past" : "De vervaldatum ligt in het verleden", "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Kan de vervaldatum niet meer dan %s dag in de toekomst instellen","Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen"], "Sharing is only allowed with group members" : "Delen kan alleen met groepsleden", @@ -196,7 +217,7 @@ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the App Store in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de App Store te deactiveren in het configuratie bestand.", "Cannot create \"data\" directory" : "\"data\" map kan niet worden aangemaakt", "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dit kan hersteld worden door de root map schrijf rechten te geven op de webserver. Zie %s", - "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rechten kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.", + "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Machtigingen kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.", "Setting locale to %s failed" : "Instellen taal op %s mislukte", "Please install one of these locales on your system and restart your webserver." : "Installeer één van de talen op je systeem en herstart je webserver.", "PHP module %s not installed." : "PHP module %s niet geïnstalleerd.", @@ -214,7 +235,7 @@ "PostgreSQL >= 9 required" : "PostgreSQL >= 9 is vereist", "Please upgrade your database version" : "Werk je databaseversie bij", "Your data directory is readable by other users" : "Je datamap is leesbaar voor andere gebruikers", - "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de permissie in 0770 zodat de directory niet door andere gebruikers bekeken kan worden.", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Wijzig de machtiging in 0770 zodat de directory niet door andere gebruikers bekeken kan worden.", "Your data directory must be an absolute path" : "Je datamap moet een absolute bestandslocatie hebben", "Check the value of \"datadirectory\" in your configuration" : "Controleer de waarde van \"datadirectory\" in je configuratie", "Your data directory is invalid" : "Je datamap is ongeldig", @@ -234,9 +255,9 @@ "Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Of, als je liever config.php alleen-lezen wilt houden, stel de optie \"config_is_read_only\" in op true.", "Can't create or write into the data directory %s" : "Kan niets creëren of wegschrijven in de datadirectory %s", "Invalid Federated Cloud ID" : "Ongeldige gefedereerde Cloud ID", - "Can’t increase permissions of %s" : "Kan niet meer rechten geven aan %s", - "Files can’t be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder permissies", - "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies", + "Can’t increase permissions of %s" : "Kan niet meer machtigingen geven aan %s", + "Files can’t be shared with delete permissions" : "Bestanden kunnen niet worden gedeeld met verwijder machtiging", + "Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' machtigingen", "Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen", "Can't read file" : "Kan bestand niet lezen", "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de appstore te deactiveren in het configuratie bestand." diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 24c107d69fa..5f7fc169077 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -8,6 +8,9 @@ OC.L10N.register( "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Файлы приложения %1$s не были заменены корректно. Удостоверьтесь, что устанавливаемая версия этого приложения совместима с версией сервера.", "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", + "Email verification" : "Подтверждение адреса электронной почты", + "Click the following button to confirm your email." : "Нажмите на кнопку чтобы подтвердить свой адрес электронной почты.", + "Click the following link to confirm your email." : "Перейдите по ссылке чтобы подтвердить свой адрес электронной почты.", "Other activities" : "Другие события", "%1$s and %2$s" : "%1$s и %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 94e29df946f..6c1ddd142aa 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -6,6 +6,9 @@ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Файлы приложения %1$s не были заменены корректно. Удостоверьтесь, что устанавливаемая версия этого приложения совместима с версией сервера.", "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", + "Email verification" : "Подтверждение адреса электронной почты", + "Click the following button to confirm your email." : "Нажмите на кнопку чтобы подтвердить свой адрес электронной почты.", + "Click the following link to confirm your email." : "Перейдите по ссылке чтобы подтвердить свой адрес электронной почты.", "Other activities" : "Другие события", "%1$s and %2$s" : "%1$s и %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s и %3$s", diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php index b1f3097cc3d..f154bd854ad 100644 --- a/lib/private/App/AppManager.php +++ b/lib/private/App/AppManager.php @@ -195,7 +195,7 @@ class AppManager implements IAppManager { if ($values[$appId] === 'yes' || $values[$appId] === 'no') { return []; } - return json_decode($values[$appId]); + return json_decode($values[$appId], true); } diff --git a/lib/private/Calendar/CalendarQuery.php b/lib/private/Calendar/CalendarQuery.php index 6b4e2b3be16..0569b66b616 100644 --- a/lib/private/Calendar/CalendarQuery.php +++ b/lib/private/Calendar/CalendarQuery.php @@ -47,8 +47,8 @@ class CalendarQuery implements ICalendarQuery { /** @var int|null */ private $limit; - /** @var array */ - private $calendarUris; + /** @var string[] */ + private $calendarUris = []; public function __construct(string $principalUri) { $this->principalUri = $principalUri; @@ -86,6 +86,9 @@ class CalendarQuery implements ICalendarQuery { $this->calendarUris[] = $calendarUri; } + /** + * @return string[] + */ public function getCalendarUris(): array { return $this->calendarUris; } diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php index 58d8d114705..1965bb3eee4 100644 --- a/lib/private/DB/Connection.php +++ b/lib/private/DB/Connection.php @@ -189,15 +189,20 @@ class Connection extends \Doctrine\DBAL\Connection { * Prepares an SQL statement. * * @param string $statement The SQL statement to prepare. - * @param int $limit - * @param int $offset + * @param int|null $limit + * @param int|null $offset * * @return Statement The prepared statement. * @throws Exception */ public function prepare($statement, $limit = null, $offset = null): Statement { - if ($limit === -1) { + if ($limit === -1 || $limit === null) { $limit = null; + } else { + $limit = (int) $limit; + } + if ($offset !== null) { + $offset = (int) $offset; } if (!is_null($limit)) { $platform = $this->getDatabasePlatform(); diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index e1f74f5327c..89265c74fae 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -450,12 +450,12 @@ class QueryBuilder implements IQueryBuilder { /** * Sets the position of the first result to retrieve (the "offset"). * - * @param integer $firstResult The first result to return. + * @param int $firstResult The first result to return. * * @return $this This QueryBuilder instance. */ public function setFirstResult($firstResult) { - $this->queryBuilder->setFirstResult($firstResult); + $this->queryBuilder->setFirstResult((int) $firstResult); return $this; } @@ -477,12 +477,16 @@ class QueryBuilder implements IQueryBuilder { * of the databases will just return an empty result set, Oracle will return * all entries. * - * @param integer $maxResults The maximum number of results to retrieve. + * @param int|null $maxResults The maximum number of results to retrieve. * * @return $this This QueryBuilder instance. */ public function setMaxResults($maxResults) { - $this->queryBuilder->setMaxResults($maxResults); + if ($maxResults === null) { + $this->queryBuilder->setMaxResults($maxResults); + } else { + $this->queryBuilder->setMaxResults((int) $maxResults); + } return $this; } diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index 8baab8746fc..bdefca01f6f 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -37,6 +37,7 @@ namespace OC\Files\Cache; use Doctrine\DBAL\Exception; use OC\Files\Filesystem; +use OC\Files\Storage\Wrapper\Encoding; use OC\Hooks\BasicEmitter; use OCP\Files\Cache\IScanner; use OCP\Files\ForbiddenException; @@ -419,7 +420,16 @@ class Scanner extends BasicEmitter implements IScanner { if ($permissions === 0) { continue; } - $file = $fileMeta['name']; + $originalFile = $fileMeta['name']; + $file = trim(\OC\Files\Filesystem::normalizePath($originalFile), '/'); + if (trim($originalFile, '/') !== $file) { + // encoding mismatch, might require compatibility wrapper + \OC::$server->getLogger()->debug('Scanner: Skipping non-normalized file name "'. $originalFile . '" in path "' . $path . '".', ['app' => 'core']); + $this->emit('\OC\Files\Cache\Scanner', 'normalizedNameMismatch', [$path ? $path . '/' . $originalFile : $originalFile]); + // skip this entry + continue; + } + $newChildNames[] = $file; $child = $path ? $path . '/' . $file : $file; try { diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 13f1a6f2ec4..6406beaeebc 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -378,7 +378,7 @@ class Local extends \OC\Files\Storage\Common { // disk_free_space doesn't work on files $sourcePath = dirname($sourcePath); } - $space = @disk_free_space($sourcePath); + $space = function_exists('disk_free_space') ? disk_free_space($sourcePath) : false; if ($space === false || is_null($space)) { return \OCP\Files\FileInfo::SPACE_UNKNOWN; } diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php index ac27697e68c..d6201dc8877 100644 --- a/lib/private/Files/Storage/Wrapper/Encoding.php +++ b/lib/private/Files/Storage/Wrapper/Encoding.php @@ -29,6 +29,7 @@ namespace OC\Files\Storage\Wrapper; use OC\Cache\CappedMemoryCache; +use OC\Files\Filesystem; use OCP\Files\Storage\IStorage; use OCP\ICache; @@ -162,7 +163,8 @@ class Encoding extends Wrapper { * @return resource|bool */ public function opendir($path) { - return $this->storage->opendir($this->findPathToUse($path)); + $handle = $this->storage->opendir($this->findPathToUse($path)); + return EncodingDirectoryWrapper::wrap($handle); } /** @@ -532,10 +534,16 @@ class Encoding extends Wrapper { } public function getMetaData($path) { - return $this->storage->getMetaData($this->findPathToUse($path)); + $entry = $this->storage->getMetaData($this->findPathToUse($path)); + $entry['name'] = trim(Filesystem::normalizePath($entry['name']), '/'); + return $entry; } public function getDirectoryContent($directory): \Traversable { - return $this->storage->getDirectoryContent($this->findPathToUse($directory)); + $entries = $this->storage->getDirectoryContent($this->findPathToUse($directory)); + foreach ($entries as $entry) { + $entry['name'] = trim(Filesystem::normalizePath($entry['name']), '/'); + yield $entry; + } } } diff --git a/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php b/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php new file mode 100644 index 00000000000..935a15af4cf --- /dev/null +++ b/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php @@ -0,0 +1,55 @@ +<?php +/** + * @copyright Copyright (c) 2021, Nextcloud GmbH. + * + * @author Robin Appelman <robin@icewind.nl> + * @author Vincent Petry <vincent@nextcloud.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Files\Storage\Wrapper; + +use Icewind\Streams\DirectoryWrapper; +use OC\Files\Filesystem; + +/** + * Normalize file names while reading directory entries + */ +class EncodingDirectoryWrapper extends DirectoryWrapper { + /** + * @return string + */ + public function dir_readdir() { + $file = readdir($this->source); + if ($file !== false && $file !== '.' && $file !== '..') { + $file = trim(Filesystem::normalizePath($file), '/'); + } + + return $file; + } + + /** + * @param resource $source + * @param callable $filter + * @return resource|bool + */ + public static function wrap($source) { + return self::wrapSource($source, [ + 'source' => $source, + ]); + } +} diff --git a/lib/private/Files/Utils/Scanner.php b/lib/private/Files/Utils/Scanner.php index 72a7084f40d..faeb31db8cc 100644 --- a/lib/private/Files/Utils/Scanner.php +++ b/lib/private/Files/Utils/Scanner.php @@ -145,6 +145,9 @@ class Scanner extends PublicEmitter { $this->emit('\OC\Files\Utils\Scanner', 'postScanFolder', [$mount->getMountPoint() . $path]); $this->dispatcher->dispatchTyped(new FolderScannedEvent($mount->getMountPoint() . $path)); }); + $scanner->listen('\OC\Files\Cache\Scanner', 'normalizedNameMismatch', function ($path) use ($mount) { + $this->emit('\OC\Files\Utils\Scanner', 'normalizedNameMismatch', [$path]); + }); } /** diff --git a/lib/private/Setup.php b/lib/private/Setup.php index a7f0f190fa2..f1ad04671f9 100644 --- a/lib/private/Setup.php +++ b/lib/private/Setup.php @@ -530,7 +530,7 @@ class Setup { $content .= "\n Options -MultiViews"; $content .= "\n RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]"; $content .= "\n RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1]"; - $content .= "\n RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav)$"; + $content .= "\n RewriteCond %{REQUEST_FILENAME} !\\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav|wasm|tflite)$"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/core/ajax/update\\.php"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/core/img/(favicon\\.ico|manifest\\.json)$"; $content .= "\n RewriteCond %{REQUEST_FILENAME} !/(cron|public|remote|status)\\.php"; diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index c1bd556de60..0543427f997 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -32,7 +32,6 @@ namespace OC\Template; use OC\AppConfig; use OC\Files\AppData\Factory; use OC\Memcache\NullCache; -use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\IAppData; use OCP\Files\NotFoundException; @@ -63,7 +62,7 @@ class SCSSCacher { /** @var IConfig */ protected $config; - /** @var ThemingDefaults */ + /** @var \OC_Defaults */ private $defaults; /** @var string */ @@ -97,7 +96,7 @@ class SCSSCacher { * @param Factory $appDataFactory * @param IURLGenerator $urlGenerator * @param IConfig $config - * @param ThemingDefaults $defaults + * @param \OC_Defaults $defaults * @param string $serverRoot * @param ICacheFactory $cacheFactory * @param IconsCacher $iconsCacher @@ -107,7 +106,7 @@ class SCSSCacher { Factory $appDataFactory, IURLGenerator $urlGenerator, IConfig $config, - ThemingDefaults $defaults, + \OC_Defaults $defaults, $serverRoot, ICacheFactory $cacheFactory, IconsCacher $iconsCacher, @@ -407,7 +406,7 @@ class SCSSCacher { } /** - * @return string SCSS code for variables from ThemingDefaults + * @return string SCSS code for variables from OC_Defaults */ private function getInjectedVariables(string $cache = ''): string { if ($this->injectedVariables !== null) { diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 2c5820fdd8b..8f21e091650 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -418,7 +418,7 @@ class Updater extends BasicEmitter { if (!empty($previousEnableStates)) { $ocApp = new \OC_App(); - if (!empty($previousEnableStates[$app])) { + if (!empty($previousEnableStates[$app]) && is_array($previousEnableStates[$app])) { $ocApp->enable($app, $previousEnableStates[$app]); } else { $ocApp->enable($app); diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index fa6f14fd3ec..710cba84879 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -750,6 +750,7 @@ class Session implements IUserSession, Emitter { } $dbToken->setLastCheck($now); + $this->tokenProvider->updateToken($dbToken); return true; } @@ -767,6 +768,7 @@ class Session implements IUserSession, Emitter { } $dbToken->setLastCheck($now); + $this->tokenProvider->updateToken($dbToken); return true; } diff --git a/lib/private/legacy/OC_Image.php b/lib/private/legacy/OC_Image.php index c30ceae9916..b9ef31ed9fa 100644 --- a/lib/private/legacy/OC_Image.php +++ b/lib/private/legacy/OC_Image.php @@ -924,6 +924,10 @@ class OC_Image implements \OCP\IImage { * @return resource|bool|\GdImage */ public function preciseResizeNew(int $width, int $height) { + if (!($width > 0) || !($height > 0)) { + $this->logger->info(__METHOD__ . '(): Requested image size not bigger than 0', ['app' => 'core']); + return false; + } if (!$this->valid()) { $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']); return false; diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index 35c81dd34e6..078e3cf9a03 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -1239,22 +1239,38 @@ class OC_Util { } /** - * Check if the setlocal call does not work. This can happen if the right + * Check if current locale is non-UTF8 + * + * @return bool + */ + private static function isNonUTF8Locale() { + if (function_exists('escapeshellcmd')) { + return '' === escapeshellcmd('§'); + } elseif (function_exists('escapeshellarg')) { + return '\'\'' === escapeshellarg('§'); + } else { + return 0 === preg_match('/utf-?8/i', setlocale(LC_CTYPE, 0)); + } + } + + /** + * Check if the setlocale call does not work. This can happen if the right * local packages are not available on the server. * * @return bool */ public static function isSetLocaleWorking() { - if ('' === basename('§')) { + if (self::isNonUTF8Locale()) { // Borrowed from \Patchwork\Utf8\Bootup::initLocale setlocale(LC_ALL, 'C.UTF-8', 'C'); setlocale(LC_CTYPE, 'en_US.UTF-8', 'fr_FR.UTF-8', 'es_ES.UTF-8', 'de_DE.UTF-8', 'ru_RU.UTF-8', 'pt_BR.UTF-8', 'it_IT.UTF-8', 'ja_JP.UTF-8', 'zh_CN.UTF-8', '0'); - } - // Check again - if ('' === basename('§')) { - return false; + // Check again + if (self::isNonUTF8Locale()) { + return false; + } } + return true; } diff --git a/lib/public/Calendar/ICalendarQuery.php b/lib/public/Calendar/ICalendarQuery.php index 142810d3fb9..6a1fff619f6 100644 --- a/lib/public/Calendar/ICalendarQuery.php +++ b/lib/public/Calendar/ICalendarQuery.php @@ -23,6 +23,7 @@ declare(strict_types=1); * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ + namespace OCP\Calendar; use DateTimeImmutable; @@ -35,6 +36,56 @@ use DateTimeImmutable; interface ICalendarQuery { /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_CATEGORIES = 'CATEGORIES'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_COMMENT = 'COMMENT'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_DESCRIPTION = 'DESCRIPTION'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_LOCATION = 'LOCATION'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_RESOURCES = 'RESOURCES'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_STATUS = 'STATUS'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_SUMMARY = 'SUMMARY'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_ATTENDEE = 'ATTENDEE'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_CONTACT = 'CONTACT'; + + /** + * @since 24.0.0 + */ + public const SEARCH_PROPERTY_ORGANIZER = 'ORGANIZER'; + + /** * Limit the results to the calendar uri(s) * * @since 23.0.0 @@ -51,6 +102,12 @@ interface ICalendarQuery { /** * Define the property name(s) to search for * + * Note: Nextcloud only indexes *some* properties. You can not search for + * arbitrary properties. + * + * @param string $value any of the ICalendarQuery::SEARCH_PROPERTY_* values + * @psalm-param ICalendarQuery::SEARCH_PROPERTY_* $value + * * @since 23.0.0 */ public function addSearchProperty(string $value): void; diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php index 5d1116075d8..7829696970c 100644 --- a/lib/public/DB/QueryBuilder/IQueryBuilder.php +++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php @@ -280,7 +280,7 @@ interface IQueryBuilder { /** * Sets the position of the first result to retrieve (the "offset"). * - * @param integer $firstResult The first result to return. + * @param int $firstResult The first result to return. * * @return $this This QueryBuilder instance. * @since 8.2.0 @@ -299,7 +299,7 @@ interface IQueryBuilder { /** * Sets the maximum number of results to retrieve (the "limit"). * - * @param integer $maxResults The maximum number of results to retrieve. + * @param int|null $maxResults The maximum number of results to retrieve. * * @return $this This QueryBuilder instance. * @since 8.2.0 diff --git a/lib/public/IDBConnection.php b/lib/public/IDBConnection.php index cedf0429869..2fa7fa1ad36 100644 --- a/lib/public/IDBConnection.php +++ b/lib/public/IDBConnection.php @@ -86,8 +86,8 @@ interface IDBConnection { /** * Used to abstract the ownCloud database access away * @param string $sql the sql query with ? placeholder for params - * @param int $limit the maximum number of rows - * @param int $offset from which row we want to start + * @param int|null $limit the maximum number of rows + * @param int|null $offset from which row we want to start * @return IPreparedStatement The prepared statement. * @since 6.0.0 * @throws Exception since 21.0.0 |