aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/l10n/es.js4
-rw-r--r--lib/l10n/es.json4
-rw-r--r--lib/l10n/et_EE.js32
-rw-r--r--lib/l10n/et_EE.json32
-rw-r--r--lib/l10n/fr.js13
-rw-r--r--lib/l10n/fr.json13
-rw-r--r--lib/l10n/sw.js3
-rw-r--r--lib/l10n/sw.json3
-rw-r--r--lib/private/AppConfig.php59
-rw-r--r--lib/private/AppFramework/Bootstrap/RegistrationContext.php3
-rw-r--r--lib/private/Collaboration/Collaborators/Search.php4
-rw-r--r--lib/private/Config/Lexicon/CoreConfigLexicon.php43
-rw-r--r--lib/private/Share/Constants.php49
-rw-r--r--lib/private/Share20/DefaultShareProvider.php30
-rw-r--r--lib/private/Share20/LegacyHooks.php2
-rw-r--r--lib/private/Share20/Manager.php27
-rw-r--r--lib/private/Share20/Share.php20
-rw-r--r--lib/private/Template/JSConfigHelper.php2
-rw-r--r--lib/public/Calendar/ICreateFromString.php24
-rw-r--r--lib/public/Config/Lexicon/Entry.php20
-rw-r--r--lib/public/IAppConfig.php28
-rw-r--r--lib/public/Share/IShare.php14
-rw-r--r--lib/public/Share/IShareProvider.php8
25 files changed, 265 insertions, 174 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 5ecdfe6a172..3f2dbe5edf9 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1218,7 +1218,6 @@ return array(
'OC\\Comments\\ManagerFactory' => $baseDir . '/lib/private/Comments/ManagerFactory.php',
'OC\\Config' => $baseDir . '/lib/private/Config.php',
'OC\\Config\\ConfigManager' => $baseDir . '/lib/private/Config/ConfigManager.php',
- 'OC\\Config\\Lexicon\\CoreConfigLexicon' => $baseDir . '/lib/private/Config/Lexicon/CoreConfigLexicon.php',
'OC\\Config\\UserConfig' => $baseDir . '/lib/private/Config/UserConfig.php',
'OC\\Console\\Application' => $baseDir . '/lib/private/Console/Application.php',
'OC\\Console\\TimestampFormatter' => $baseDir . '/lib/private/Console/TimestampFormatter.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index ab42cabba21..233b667add9 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -1259,7 +1259,6 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Comments\\ManagerFactory' => __DIR__ . '/../../..' . '/lib/private/Comments/ManagerFactory.php',
'OC\\Config' => __DIR__ . '/../../..' . '/lib/private/Config.php',
'OC\\Config\\ConfigManager' => __DIR__ . '/../../..' . '/lib/private/Config/ConfigManager.php',
- 'OC\\Config\\Lexicon\\CoreConfigLexicon' => __DIR__ . '/../../..' . '/lib/private/Config/Lexicon/CoreConfigLexicon.php',
'OC\\Config\\UserConfig' => __DIR__ . '/../../..' . '/lib/private/Config/UserConfig.php',
'OC\\Console\\Application' => __DIR__ . '/../../..' . '/lib/private/Console/Application.php',
'OC\\Console\\TimestampFormatter' => __DIR__ . '/../../..' . '/lib/private/Console/TimestampFormatter.php',
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 17540701703..9c7ea8f5f41 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -323,9 +323,13 @@ OC.L10N.register(
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Para permitir que este chequeo se lleve a cabo, debe asegurarse que su servidor pueda conectarse a sí mismo. Por tanto, este debe poder resolver y conectarse a alguno de sus `trusted_domains` o al url definido en `overwrite.cli.url`. Este fallo puede ser resultado de una inconsistencia DNS del lado del servidor o una regla de salida del cortafuegos.",
+ "Analyze images" : "Analizar imágenes",
+ "Ask a question about the given images." : "Haga una pregunta acerca de las imágenes proporcionadas.",
"Images" : "Imágenes",
+ "Images to ask a question about" : "Imágenes sobre las cuales se formulará una pregunta",
"Question" : "Pregunta",
"Generated response" : "Respuesta generada",
+ "The answer to the question" : "La respuesta a la pregunta",
"Voice chat with the assistant" : "Chat de voz con el asistente",
"System prompt" : "Prompt del sistema",
"Define rules and assumptions that the assistant should follow during the conversation." : "Definir las reglas y supuestos que el asistente debe seguir durante la conversación.",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index ac0dac19026..29ee23631f9 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -321,9 +321,13 @@
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Para permitir que este chequeo se lleve a cabo, debe asegurarse que su servidor pueda conectarse a sí mismo. Por tanto, este debe poder resolver y conectarse a alguno de sus `trusted_domains` o al url definido en `overwrite.cli.url`. Este fallo puede ser resultado de una inconsistencia DNS del lado del servidor o una regla de salida del cortafuegos.",
+ "Analyze images" : "Analizar imágenes",
+ "Ask a question about the given images." : "Haga una pregunta acerca de las imágenes proporcionadas.",
"Images" : "Imágenes",
+ "Images to ask a question about" : "Imágenes sobre las cuales se formulará una pregunta",
"Question" : "Pregunta",
"Generated response" : "Respuesta generada",
+ "The answer to the question" : "La respuesta a la pregunta",
"Voice chat with the assistant" : "Chat de voz con el asistente",
"System prompt" : "Prompt del sistema",
"Define rules and assumptions that the assistant should follow during the conversation." : "Definir las reglas y supuestos que el asistente debe seguir durante la conversación.",
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index 1b86c9138c7..92080235dd5 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -30,14 +30,14 @@ OC.L10N.register(
"%sbit or higher PHP required." : "Vajalik on %s-bitine või parem PHP versioon.",
"The following architectures are supported: %s" : "Toetatud on järgnevad arhitektuurid: %s",
"The following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
- "The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
- "The library %s is not available." : "Teek %s pole saadaval.",
+ "The command line tool %s could not be found" : "Käsurea töövahendit %s ei leidu",
+ "The library %s is not available." : " %s teek pole saadaval.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Vajalik on „%1$s“ teek suurema versiooniga kui %2$s - hetkel on versioon %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Vajalik on „%1$s“ teek väiksema versiooniga kui %2$s - hetkel on versioon %3$s.",
"The following platforms are supported: %s" : "Toetatud on järgmised platvormid: %s",
"Server version %s or higher is required." : "Nõutav on serveri versioon %s või suurem.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
- "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige või omama eraldi õiguse selle seadustuse muutmiseks",
+ "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige või omama eraldi õigust selle seadustuse muutmiseks",
"Your current IP address doesn't allow you to perform admin actions" : "Sinu praeguselt e-posti aadressilt ei saa teha haldustoiminguid",
"Logged in account must be an admin or sub admin" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige",
"Logged in account must be an admin" : "Sisselogitud kasutajakonto peab olema peakasutajate grupi liige",
@@ -160,6 +160,7 @@ OC.L10N.register(
"PostgreSQL Login and/or password not valid" : "PostgreSQLi andmebaasi kasutajatunnus ja/või salasõna pole õiged",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X ei ole toetatud ja %s ei pruugi korralikult toimida sellel platvormil. Kasuta seda omal vastutusel!",
"For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.",
+ "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." : "Tundub, et %s server töötab 32-bitises PHP käituskeskkonnas ja „open_basedir“ on php.ini failis seadistatud. Kui failide suurus on üle 4 GB, siis võib tekkida probleeme ning antud lahenduse kasutamist me ei soovita.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Palun eemalda oma serveri seadistustest php.ini failist „open_basedir“ seadistus või võta kasutusele 64-bitisel platvormil põhinev PHP versioon.",
"Set an admin Login." : "Lisa peakasutaja kasutajanimi.",
"Set an admin password." : "Lisa peakasutaja salasõna.",
@@ -214,6 +215,7 @@ OC.L10N.register(
"Group \"%s\" does not exist" : "„%s“ gruppi pole olemas",
"The requested share does not exist anymore" : "Soovitud jagamist enam ei eksisteeri",
"The requested share comes from a disabled user" : "Soovitud jaosmeedia on loonud blokeeritud kasutaja",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kuna kasutajate arvu ülempiir on käes, siis uus kasutaja jäi lisamata. Lisateavet leiad oma teavitustest.",
"Could not find category \"%s\"" : "Ei leia kategooriat „%s“",
"Input text" : "Sisendtekst",
"The input text" : "Sisendtekst",
@@ -386,6 +388,8 @@ OC.L10N.register(
"Output speech" : "Kõneväljund",
"The generated speech" : "Koostatud kõne",
"Describe a task that you want the assistant to do or ask a question" : "Kirjelda seda, mida soovid Abilisele ülesandeks teha või lihtsalt küsi midagi.",
+ "Generated reply" : "Koostatud vastus",
+ "The generated text from the assistant" : "Abilise poolt koostatud tekst",
"Change Tone" : "Teksti tooni muutmine",
"Change the tone of a piece of text." : "Muuda antud teksti tonaalsust.",
"Write a text that you want the assistant to rewrite in another tone." : "Kirjuta üles see, mille tonaalsust tahad Abilisel lasta ümber kirjutada.",
@@ -399,6 +403,9 @@ OC.L10N.register(
"The generated response as part of the conversation" : "Loodud vastus vestluse osana",
"Formalize text" : "Muuda tekst ametlikuks",
"Takes a text and makes it sound more formal" : "Sisestatud teksti vormistamine ametlikuna",
+ "Write a text that you want the assistant to formalize" : "Sisesta tekst, mille Abiline peaks tegema ametlikumaks",
+ "Formalized text" : "Ametlikus vormis tekst",
+ "The formalized text" : "Mitteametlikus vormis tekst",
"Generate a headline" : "Alapealkirja loomine",
"Generates a possible headline for a text." : "Võimaldab luua teksti põhjal kokkuvõtliku alapealkirja.",
"Original text" : "Lähtetekst",
@@ -410,7 +417,26 @@ OC.L10N.register(
"The text to proofread" : "Keelekorrektuuri vajav tekst",
"Corrections" : "Korrektuuris tehtud parandused",
"The corrections that should be made in your text" : "Korrektuuris tehtud parandused, mis peaks sinu teksti lisanduma",
+ "Reformulate text" : "Teksti sõnastuse mutmine",
+ "Takes a text and reformulates it" : "Sisendina antud tekst saab ümbersõnastatud",
+ "Write a text that you want the assistant to reformulate" : "Sisesta tekst, mille Abiline peaks ümbersõnastama",
+ "Reformulated text" : "Ümbersõnastatud tekst",
+ "The reformulated text, written by the assistant" : "Abilise poolt ümbersõnastatud tekst",
+ "Simplify text" : "Teksti lihtsustamine",
+ "Takes a text and simplifies it" : "Sisendina antud tekst saab lihtsustatud",
+ "Write a text that you want the assistant to simplify" : "Sisesta tekst, mille Abiline peaks tegema lihtsamaks",
+ "Simplified text" : "Lihtsustatud tekst",
+ "The simplified text" : "Lihtsustatud tekst",
+ "Summarize" : "Teksti kokkuvõte",
+ "Summarizes a text" : "Sisendina antud tekstist tehakse kokkuvõte",
+ "The original text to summarize" : "Algme tekst, millest peaks tegema kokkuvõtte",
"Summary" : "Kokkuvõte",
+ "The generated summary" : "Koostatud kokkuvõte",
+ "Extract topics" : "Teemade esiletoomine",
+ "Extracts topics from a text and outputs them separated by commas" : "Sisendina antud tekstist leitakse teemad, mis väljastatakse komadega eraldatud loendina",
+ "The original text to extract topics from" : "Lähtetekst, millest teemad tuvastatakse",
+ "Topics" : "Teemad",
+ "The list of extracted topics" : "Tuvastatud teemade loend",
"Translate" : "Tõlgi",
"Translate text from one language to another" : "Tõlgi teksti ühest keelest teise",
"Origin text" : "Lähtetekst",
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index d0d0451b338..b8e16d36993 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -28,14 +28,14 @@
"%sbit or higher PHP required." : "Vajalik on %s-bitine või parem PHP versioon.",
"The following architectures are supported: %s" : "Toetatud on järgnevad arhitektuurid: %s",
"The following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
- "The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
- "The library %s is not available." : "Teek %s pole saadaval.",
+ "The command line tool %s could not be found" : "Käsurea töövahendit %s ei leidu",
+ "The library %s is not available." : " %s teek pole saadaval.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Vajalik on „%1$s“ teek suurema versiooniga kui %2$s - hetkel on versioon %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Vajalik on „%1$s“ teek väiksema versiooniga kui %2$s - hetkel on versioon %3$s.",
"The following platforms are supported: %s" : "Toetatud on järgmised platvormid: %s",
"Server version %s or higher is required." : "Nõutav on serveri versioon %s või suurem.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
- "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige või omama eraldi õiguse selle seadustuse muutmiseks",
+ "Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige või omama eraldi õigust selle seadustuse muutmiseks",
"Your current IP address doesn't allow you to perform admin actions" : "Sinu praeguselt e-posti aadressilt ei saa teha haldustoiminguid",
"Logged in account must be an admin or sub admin" : "Sisselogitud kasutajakonto peab olema peakasutajate või selle alamgrupi liige",
"Logged in account must be an admin" : "Sisselogitud kasutajakonto peab olema peakasutajate grupi liige",
@@ -158,6 +158,7 @@
"PostgreSQL Login and/or password not valid" : "PostgreSQLi andmebaasi kasutajatunnus ja/või salasõna pole õiged",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X ei ole toetatud ja %s ei pruugi korralikult toimida sellel platvormil. Kasuta seda omal vastutusel!",
"For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.",
+ "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." : "Tundub, et %s server töötab 32-bitises PHP käituskeskkonnas ja „open_basedir“ on php.ini failis seadistatud. Kui failide suurus on üle 4 GB, siis võib tekkida probleeme ning antud lahenduse kasutamist me ei soovita.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Palun eemalda oma serveri seadistustest php.ini failist „open_basedir“ seadistus või võta kasutusele 64-bitisel platvormil põhinev PHP versioon.",
"Set an admin Login." : "Lisa peakasutaja kasutajanimi.",
"Set an admin password." : "Lisa peakasutaja salasõna.",
@@ -212,6 +213,7 @@
"Group \"%s\" does not exist" : "„%s“ gruppi pole olemas",
"The requested share does not exist anymore" : "Soovitud jagamist enam ei eksisteeri",
"The requested share comes from a disabled user" : "Soovitud jaosmeedia on loonud blokeeritud kasutaja",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kuna kasutajate arvu ülempiir on käes, siis uus kasutaja jäi lisamata. Lisateavet leiad oma teavitustest.",
"Could not find category \"%s\"" : "Ei leia kategooriat „%s“",
"Input text" : "Sisendtekst",
"The input text" : "Sisendtekst",
@@ -384,6 +386,8 @@
"Output speech" : "Kõneväljund",
"The generated speech" : "Koostatud kõne",
"Describe a task that you want the assistant to do or ask a question" : "Kirjelda seda, mida soovid Abilisele ülesandeks teha või lihtsalt küsi midagi.",
+ "Generated reply" : "Koostatud vastus",
+ "The generated text from the assistant" : "Abilise poolt koostatud tekst",
"Change Tone" : "Teksti tooni muutmine",
"Change the tone of a piece of text." : "Muuda antud teksti tonaalsust.",
"Write a text that you want the assistant to rewrite in another tone." : "Kirjuta üles see, mille tonaalsust tahad Abilisel lasta ümber kirjutada.",
@@ -397,6 +401,9 @@
"The generated response as part of the conversation" : "Loodud vastus vestluse osana",
"Formalize text" : "Muuda tekst ametlikuks",
"Takes a text and makes it sound more formal" : "Sisestatud teksti vormistamine ametlikuna",
+ "Write a text that you want the assistant to formalize" : "Sisesta tekst, mille Abiline peaks tegema ametlikumaks",
+ "Formalized text" : "Ametlikus vormis tekst",
+ "The formalized text" : "Mitteametlikus vormis tekst",
"Generate a headline" : "Alapealkirja loomine",
"Generates a possible headline for a text." : "Võimaldab luua teksti põhjal kokkuvõtliku alapealkirja.",
"Original text" : "Lähtetekst",
@@ -408,7 +415,26 @@
"The text to proofread" : "Keelekorrektuuri vajav tekst",
"Corrections" : "Korrektuuris tehtud parandused",
"The corrections that should be made in your text" : "Korrektuuris tehtud parandused, mis peaks sinu teksti lisanduma",
+ "Reformulate text" : "Teksti sõnastuse mutmine",
+ "Takes a text and reformulates it" : "Sisendina antud tekst saab ümbersõnastatud",
+ "Write a text that you want the assistant to reformulate" : "Sisesta tekst, mille Abiline peaks ümbersõnastama",
+ "Reformulated text" : "Ümbersõnastatud tekst",
+ "The reformulated text, written by the assistant" : "Abilise poolt ümbersõnastatud tekst",
+ "Simplify text" : "Teksti lihtsustamine",
+ "Takes a text and simplifies it" : "Sisendina antud tekst saab lihtsustatud",
+ "Write a text that you want the assistant to simplify" : "Sisesta tekst, mille Abiline peaks tegema lihtsamaks",
+ "Simplified text" : "Lihtsustatud tekst",
+ "The simplified text" : "Lihtsustatud tekst",
+ "Summarize" : "Teksti kokkuvõte",
+ "Summarizes a text" : "Sisendina antud tekstist tehakse kokkuvõte",
+ "The original text to summarize" : "Algme tekst, millest peaks tegema kokkuvõtte",
"Summary" : "Kokkuvõte",
+ "The generated summary" : "Koostatud kokkuvõte",
+ "Extract topics" : "Teemade esiletoomine",
+ "Extracts topics from a text and outputs them separated by commas" : "Sisendina antud tekstist leitakse teemad, mis väljastatakse komadega eraldatud loendina",
+ "The original text to extract topics from" : "Lähtetekst, millest teemad tuvastatakse",
+ "Topics" : "Teemad",
+ "The list of extracted topics" : "Tuvastatud teemade loend",
"Translate" : "Tõlgi",
"Translate text from one language to another" : "Tõlgi teksti ühest keelest teise",
"Origin text" : "Lähtetekst",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index b6de0091936..edfe25a6362 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -324,13 +324,14 @@ OC.L10N.register(
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Pour autoriser cette vérification, pour devez vous assurer que votre serveur web peut se connecter à lui-même. Il doit donc être capable de résoudre et de se connecter à au moins un de ses `trusted_domains` ou à l'URL `overwrite.cli.url`. Cet échec peut être le résultat d'une erreur de DNS côté serveur ou d'une règle de pare-feu sortante.",
+ "Analyze images" : "Analyser des images",
"Images" : "Images",
"Question" : "Question",
"Generated response" : "Réponse générée",
"System prompt" : "Invite du système",
"Define rules and assumptions that the assistant should follow during the conversation." : "Définir les règles et les hypothèses que l'assistant doit suivre pendant la conversation.",
"Chat history" : "Historique de la discussion",
- "Transcribe audio" : "Transcrire l'audio",
+ "Transcribe audio" : "Transcrire de l'audio",
"Transcribe the things said in an audio" : "Transcrire les propos exprimés dans un fichier audio",
"Audio input" : "Entrée audio",
"The audio to transcribe" : "Audio à retranscrire",
@@ -348,7 +349,7 @@ OC.L10N.register(
"Chat message" : "Message de discussion",
"A chat message to send to the agent." : "Un message instantané à envoyer à l'agent.",
"The response from the chat model." : "La réponse du modèle de messagerie instantanée",
- "Context write" : "Écrire contextuellement",
+ "Context write" : "Écrire selon un contexte",
"Writes text in a given style based on the provided source material." : "Écrit un texte dans un style donné, basé sur des données initiales préalablement fournies.",
"Writing style" : "Style rédactionnel",
"Demonstrate a writing style that you would like to immitate" : "Montrez un style d'écriture que vous aimeriez imiter",
@@ -356,12 +357,12 @@ OC.L10N.register(
"The content that would like to be rewritten in the new writing style" : "Contenu qui doit être réécrit dans le nouveau style de rédaction",
"Generated text" : "Texte généré",
"The generated text with content from the source material in the given style" : "Le texte généré reprend le contenu du document source dans le style donné",
- "Emoji generator" : "Générateur d'emoji",
+ "Emoji generator" : "Générateur d'émoji",
"Takes text and generates a representative emoji for it." : "Prend un texte et génère un émoji représentatif.",
"The text to generate an emoji for" : "Texte pour lequel générer un émoji",
"Generated emoji" : "Émoji généré",
"The generated emoji based on the input text" : "Émoji généré en fonction du texte saisi",
- "Generate image" : "Générer l'image",
+ "Generate image" : "Générer une image",
"Generate an image from a text prompt" : "Générer une image à partir d'un texte",
"Prompt" : "Prompt",
"Describe the image you want to generate" : "Décrivez l'image que vous souhaitez générer",
@@ -369,7 +370,7 @@ OC.L10N.register(
"How many images to generate" : "Nombre d'images à générer",
"Output images" : "Images de sortie",
"The generated images" : "Les images générées",
- "Generate speech" : "Générer la vocalisation",
+ "Generate speech" : "Générer une synthèse vocale",
"Generate speech from a transcript" : "Générer la vocalisation à partir d'une transcription",
"Write transcript that you want the assistant to generate speech from" : "Écrire la transcription à partir de laquelle vous voulez générer la vocalisation",
"Output speech" : "Sortie de la vocalisation",
@@ -430,7 +431,7 @@ OC.L10N.register(
"The original text to summarize" : "Le texte original à résumer",
"Summary" : "Résumé",
"The generated summary" : "Le résumé généré",
- "Extract topics" : "Extraire des thèmes",
+ "Extract topics" : "Extraire des sujets",
"Extracts topics from a text and outputs them separated by commas" : "Extrait les sujets d'un texte et les affiche en les séparant par des virgules.",
"The original text to extract topics from" : "Texte original à partir duquel les thèmes sont extraits",
"Topics" : "Sujets",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 3776b605f33..6f1edd70da2 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -322,13 +322,14 @@
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
"To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Pour autoriser cette vérification, pour devez vous assurer que votre serveur web peut se connecter à lui-même. Il doit donc être capable de résoudre et de se connecter à au moins un de ses `trusted_domains` ou à l'URL `overwrite.cli.url`. Cet échec peut être le résultat d'une erreur de DNS côté serveur ou d'une règle de pare-feu sortante.",
+ "Analyze images" : "Analyser des images",
"Images" : "Images",
"Question" : "Question",
"Generated response" : "Réponse générée",
"System prompt" : "Invite du système",
"Define rules and assumptions that the assistant should follow during the conversation." : "Définir les règles et les hypothèses que l'assistant doit suivre pendant la conversation.",
"Chat history" : "Historique de la discussion",
- "Transcribe audio" : "Transcrire l'audio",
+ "Transcribe audio" : "Transcrire de l'audio",
"Transcribe the things said in an audio" : "Transcrire les propos exprimés dans un fichier audio",
"Audio input" : "Entrée audio",
"The audio to transcribe" : "Audio à retranscrire",
@@ -346,7 +347,7 @@
"Chat message" : "Message de discussion",
"A chat message to send to the agent." : "Un message instantané à envoyer à l'agent.",
"The response from the chat model." : "La réponse du modèle de messagerie instantanée",
- "Context write" : "Écrire contextuellement",
+ "Context write" : "Écrire selon un contexte",
"Writes text in a given style based on the provided source material." : "Écrit un texte dans un style donné, basé sur des données initiales préalablement fournies.",
"Writing style" : "Style rédactionnel",
"Demonstrate a writing style that you would like to immitate" : "Montrez un style d'écriture que vous aimeriez imiter",
@@ -354,12 +355,12 @@
"The content that would like to be rewritten in the new writing style" : "Contenu qui doit être réécrit dans le nouveau style de rédaction",
"Generated text" : "Texte généré",
"The generated text with content from the source material in the given style" : "Le texte généré reprend le contenu du document source dans le style donné",
- "Emoji generator" : "Générateur d'emoji",
+ "Emoji generator" : "Générateur d'émoji",
"Takes text and generates a representative emoji for it." : "Prend un texte et génère un émoji représentatif.",
"The text to generate an emoji for" : "Texte pour lequel générer un émoji",
"Generated emoji" : "Émoji généré",
"The generated emoji based on the input text" : "Émoji généré en fonction du texte saisi",
- "Generate image" : "Générer l'image",
+ "Generate image" : "Générer une image",
"Generate an image from a text prompt" : "Générer une image à partir d'un texte",
"Prompt" : "Prompt",
"Describe the image you want to generate" : "Décrivez l'image que vous souhaitez générer",
@@ -367,7 +368,7 @@
"How many images to generate" : "Nombre d'images à générer",
"Output images" : "Images de sortie",
"The generated images" : "Les images générées",
- "Generate speech" : "Générer la vocalisation",
+ "Generate speech" : "Générer une synthèse vocale",
"Generate speech from a transcript" : "Générer la vocalisation à partir d'une transcription",
"Write transcript that you want the assistant to generate speech from" : "Écrire la transcription à partir de laquelle vous voulez générer la vocalisation",
"Output speech" : "Sortie de la vocalisation",
@@ -428,7 +429,7 @@
"The original text to summarize" : "Le texte original à résumer",
"Summary" : "Résumé",
"The generated summary" : "Le résumé généré",
- "Extract topics" : "Extraire des thèmes",
+ "Extract topics" : "Extraire des sujets",
"Extracts topics from a text and outputs them separated by commas" : "Extrait les sujets d'un texte et les affiche en les séparant par des virgules.",
"The original text to extract topics from" : "Texte original à partir duquel les thèmes sont extraits",
"Topics" : "Sujets",
diff --git a/lib/l10n/sw.js b/lib/l10n/sw.js
index adc3bc63473..9e10b43b403 100644
--- a/lib/l10n/sw.js
+++ b/lib/l10n/sw.js
@@ -8,12 +8,15 @@ OC.L10N.register(
"View profile" : "Angalia wasifu",
"Local time: %s" : "Muda wa kawaida: %s",
"_%n year ago_::_%n years ago_" : ["%n year ago","%n years ago"],
+ "_%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" : "sukunde zilizopita",
"%1$s (renamed)" : "%1$s (iliyopew jina jipya)",
"renamed file" : "Faili iliyopewa jina jipya",
"Filenames must not end with \"%1$s\"." : "Majina ya faili hayapaswi kuishia na \"%1$s\"",
"File already exists" : "Faili lipo tayari",
"Templates" : "Violezo",
+ "Filename contains at least one invalid character" : "Filename contains at least one invalid character",
"__language_name__" : "_lugha_jina_",
"Apps" : "Maombi",
"Settings" : "Mipangilio",
diff --git a/lib/l10n/sw.json b/lib/l10n/sw.json
index c576f37cabc..a645af4e6a8 100644
--- a/lib/l10n/sw.json
+++ b/lib/l10n/sw.json
@@ -6,12 +6,15 @@
"View profile" : "Angalia wasifu",
"Local time: %s" : "Muda wa kawaida: %s",
"_%n year ago_::_%n years ago_" : ["%n year ago","%n years ago"],
+ "_%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" : "sukunde zilizopita",
"%1$s (renamed)" : "%1$s (iliyopew jina jipya)",
"renamed file" : "Faili iliyopewa jina jipya",
"Filenames must not end with \"%1$s\"." : "Majina ya faili hayapaswi kuishia na \"%1$s\"",
"File already exists" : "Faili lipo tayari",
"Templates" : "Violezo",
+ "Filename contains at least one invalid character" : "Filename contains at least one invalid character",
"__language_name__" : "_lugha_jina_",
"Apps" : "Maombi",
"Settings" : "Mipangilio",
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 0a46109c9f9..2280ac1a79f 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -17,6 +17,7 @@ use OCP\Config\Lexicon\Entry;
use OCP\Config\Lexicon\ILexicon;
use OCP\Config\Lexicon\Preset;
use OCP\Config\Lexicon\Strictness;
+use OCP\Config\ValueType;
use OCP\DB\Exception as DBException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Exceptions\AppConfigIncorrectTypeException;
@@ -1095,6 +1096,49 @@ class AppConfig implements IAppConfig {
}
/**
+ * @inheritDoc
+ *
+ * @param string $app id of the app
+ * @param string $key config key
+ *
+ * @return array{app: string, key: string, lazy?: bool, valueType?: ValueType, valueTypeName?: string, sensitive?: bool, default?: string, definition?: string, note?: string}
+ * @since 32.0.0
+ */
+ public function getKeyDetails(string $app, string $key): array {
+ $this->assertParams($app, $key);
+ try {
+ $details = $this->getDetails($app, $key);
+ } catch (AppConfigUnknownKeyException $e) {
+ $details = [
+ 'app' => $app,
+ 'key' => $key
+ ];
+ }
+
+ /** @var Entry $lexiconEntry */
+ try {
+ $lazy = false;
+ $this->matchAndApplyLexiconDefinition($app, $key, $lazy, lexiconEntry: $lexiconEntry);
+ } catch (AppConfigTypeConflictException|AppConfigUnknownKeyException) {
+ // can be ignored
+ }
+
+ if ($lexiconEntry !== null) {
+ $details = array_merge($details, [
+ 'lazy' => $lexiconEntry->isLazy(),
+ 'valueType' => $lexiconEntry->getValueType(),
+ 'valueTypeName' => $lexiconEntry->getValueType()->name,
+ 'sensitive' => $lexiconEntry->isFlagged(self::FLAG_SENSITIVE),
+ 'default' => $lexiconEntry->getDefault($this->getLexiconPreset()),
+ 'definition' => $lexiconEntry->getDefinition(),
+ 'note' => $lexiconEntry->getNote(),
+ ]);
+ }
+
+ return array_filter($details);
+ }
+
+ /**
* @param string $type
*
* @return int
@@ -1631,6 +1675,7 @@ class AppConfig implements IAppConfig {
?bool &$lazy = null,
int &$type = self::VALUE_MIXED,
?string &$default = null,
+ ?Entry &$lexiconEntry = null,
): bool {
if (in_array($key,
[
@@ -1655,27 +1700,27 @@ class AppConfig implements IAppConfig {
return true;
}
- /** @var Entry $configValue */
- $configValue = $configDetails['entries'][$key];
+ /** @var Entry $lexiconEntry */
+ $lexiconEntry = $configDetails['entries'][$key];
$type &= ~self::VALUE_SENSITIVE;
- $appConfigValueType = $configValue->getValueType()->toAppConfigFlag();
+ $appConfigValueType = $lexiconEntry->getValueType()->toAppConfigFlag();
if ($type === self::VALUE_MIXED) {
$type = $appConfigValueType; // we overwrite if value was requested as mixed
} elseif ($appConfigValueType !== $type) {
throw new AppConfigTypeConflictException('The app config key ' . $app . '/' . $key . ' is typed incorrectly in relation to the config lexicon');
}
- $lazy = $configValue->isLazy();
+ $lazy = $lexiconEntry->isLazy();
// only look for default if needed, default from Lexicon got priority
if ($default !== null) {
- $default = $configValue->getDefault($this->getLexiconPreset()) ?? $default;
+ $default = $lexiconEntry->getDefault($this->getLexiconPreset()) ?? $default;
}
- if ($configValue->isFlagged(self::FLAG_SENSITIVE)) {
+ if ($lexiconEntry->isFlagged(self::FLAG_SENSITIVE)) {
$type |= self::VALUE_SENSITIVE;
}
- if ($configValue->isDeprecated()) {
+ if ($lexiconEntry->isDeprecated()) {
$this->logger->notice('App config key ' . $app . '/' . $key . ' is set as deprecated.');
}
diff --git a/lib/private/AppFramework/Bootstrap/RegistrationContext.php b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
index 94250aad37b..8bd1ff35610 100644
--- a/lib/private/AppFramework/Bootstrap/RegistrationContext.php
+++ b/lib/private/AppFramework/Bootstrap/RegistrationContext.php
@@ -10,7 +10,6 @@ declare(strict_types=1);
namespace OC\AppFramework\Bootstrap;
use Closure;
-use OC\Config\Lexicon\CoreConfigLexicon;
use OC\Support\CrashReport\Registry;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
@@ -144,7 +143,7 @@ class RegistrationContext {
private array $declarativeSettings = [];
/** @var array<array-key, string> */
- private array $configLexiconClasses = ['core' => CoreConfigLexicon::class];
+ private array $configLexiconClasses = [];
/** @var ServiceRegistration<ITeamResourceProvider>[] */
private array $teamResourceProviders = [];
diff --git a/lib/private/Collaboration/Collaborators/Search.php b/lib/private/Collaboration/Collaborators/Search.php
index 32c70549a7b..ea39f885fc6 100644
--- a/lib/private/Collaboration/Collaborators/Search.php
+++ b/lib/private/Collaboration/Collaborators/Search.php
@@ -11,7 +11,7 @@ use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
use OCP\IContainer;
-use OCP\Share;
+use OCP\Share\IShare;
class Search implements ISearch {
protected array $pluginList = [];
@@ -81,7 +81,7 @@ class Search implements ISearch {
}
public function registerPlugin(array $pluginInfo): void {
- $shareType = constant(Share::class . '::' . $pluginInfo['shareType']);
+ $shareType = constant(IShare::class . '::' . substr($pluginInfo['shareType'], strlen('SHARE_')));
if ($shareType === null) {
throw new \InvalidArgumentException('Provided ShareType is invalid');
}
diff --git a/lib/private/Config/Lexicon/CoreConfigLexicon.php b/lib/private/Config/Lexicon/CoreConfigLexicon.php
deleted file mode 100644
index de84a58131c..00000000000
--- a/lib/private/Config/Lexicon/CoreConfigLexicon.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-declare(strict_types=1);
-/**
- * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-namespace OC\Config\Lexicon;
-
-use OCP\Config\Lexicon\Entry;
-use OCP\Config\Lexicon\ILexicon;
-use OCP\Config\Lexicon\Strictness;
-use OCP\Config\ValueType;
-
-/**
- * ConfigLexicon for 'core' app/user configs
- */
-class CoreConfigLexicon implements ILexicon {
- public function getStrictness(): Strictness {
- return Strictness::IGNORE;
- }
-
- /**
- * @inheritDoc
- * @return Entry[]
- */
- public function getAppConfigs(): array {
- return [
- new Entry('lastcron', ValueType::INT, 0, 'timestamp of last cron execution'),
- ];
- }
-
- /**
- * @inheritDoc
- * @return Entry[]
- */
- public function getUserConfigs(): array {
- return [
- new Entry('lang', ValueType::STRING, null, 'language'),
- ];
- }
-}
diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php
index baff04fbc4a..c55caee6f0a 100644
--- a/lib/private/Share/Constants.php
+++ b/lib/private/Share/Constants.php
@@ -7,56 +7,7 @@
*/
namespace OC\Share;
-use OCP\Share\IShare;
-
class Constants {
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_USER instead
- */
- public const SHARE_TYPE_USER = 0;
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_GROUP instead
- */
- public const SHARE_TYPE_GROUP = 1;
- // const SHARE_TYPE_USERGROUP = 2; // Internal type used by DefaultShareProvider
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_LINK instead
- */
- public const SHARE_TYPE_LINK = 3;
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_EMAIL instead
- */
- public const SHARE_TYPE_EMAIL = 4;
- public const SHARE_TYPE_CONTACT = 5; // ToDo Check if it is still in use otherwise remove it
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_REMOTE instead
- */
- public const SHARE_TYPE_REMOTE = 6;
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_CIRCLE instead
- */
- public const SHARE_TYPE_CIRCLE = 7;
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_GUEST instead
- */
- public const SHARE_TYPE_GUEST = 8;
- /**
- * @deprecated 17.0.0 - use IShare::REMOTE_GROUP instead
- */
- public const SHARE_TYPE_REMOTE_GROUP = 9;
- /**
- * @deprecated 17.0.0 - use IShare::TYPE_ROOM instead
- */
- public const SHARE_TYPE_ROOM = 10;
- // const SHARE_TYPE_USERROOM = 11; // Internal type used by RoomShareProvider
- /**
- * @deprecated 21.0.0 - use IShare::TYPE_DECK instead
- */
- public const SHARE_TYPE_DECK = 12;
- // const SHARE_TYPE_DECK_USER = 13; // Internal type used by DeckShareProvider
-
- // Note to developers: Do not add new share types here
-
public const FORMAT_NONE = -1;
public const FORMAT_STATUSES = -2;
public const FORMAT_SOURCES = -3; // ToDo Check if it is still in use otherwise remove it
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index a2c0fd15eb4..5300e6e1baa 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -13,12 +13,14 @@ use OC\Share20\Exception\BackendError;
use OC\Share20\Exception\InvalidShare;
use OC\Share20\Exception\ProviderException;
use OC\User\LazyUser;
+use OCA\Files_Sharing\AppInfo\Application;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Defaults;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
+use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IL10N;
@@ -43,9 +45,6 @@ use function str_starts_with;
* @package OC\Share20
*/
class DefaultShareProvider implements IShareProviderWithNotification, IShareProviderSupportsAccept, IShareProviderSupportsAllSharesInFolder {
- // Special share type for user modified group shares
- public const SHARE_TYPE_USERGROUP = 2;
-
public function __construct(
private IDBConnection $dbConn,
private IUserManager $userManager,
@@ -58,6 +57,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
private ITimeFactory $timeFactory,
private LoggerInterface $logger,
private IManager $shareManager,
+ private IConfig $config,
) {
}
@@ -127,9 +127,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
$qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
}
- if (method_exists($share, 'getParent')) {
- $qb->setValue('parent', $qb->createNamedParameter($share->getParent()));
- }
+ $qb->setValue('parent', $qb->createNamedParameter($share->getParent()));
$qb->setValue('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0, IQueryBuilder::PARAM_INT));
} else {
@@ -358,14 +356,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
return $share;
}
- /**
- * Get all children of this share
- * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
- *
- * @param \OCP\Share\IShare $parent
- * @return \OCP\Share\IShare[]
- */
- public function getChildren(\OCP\Share\IShare $parent) {
+ public function getChildren(IShare $parent): array {
$children = [];
$qb = $this->dbConn->getQueryBuilder();
@@ -485,6 +476,15 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
protected function createUserSpecificGroupShare(IShare $share, string $recipient): int {
$type = $share->getNodeType();
+ $shareFolder = $this->config->getSystemValue('share_folder', '/');
+ $allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
+ if ($allowCustomShareFolder) {
+ $shareFolder = $this->config->getUserValue($recipient, Application::APP_ID, 'share_folder', $shareFolder);
+ }
+
+ $target = $shareFolder . '/' . $share->getNode()->getName();
+ $target = \OC\Files\Filesystem::normalizePath($target);
+
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('share')
->values([
@@ -496,7 +496,7 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
'item_type' => $qb->createNamedParameter($type),
'item_source' => $qb->createNamedParameter($share->getNodeId()),
'file_source' => $qb->createNamedParameter($share->getNodeId()),
- 'file_target' => $qb->createNamedParameter($share->getTarget()),
+ 'file_target' => $qb->createNamedParameter($target),
'permissions' => $qb->createNamedParameter($share->getPermissions()),
'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
])->executeStatement();
diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php
index 3bce0b9560a..d54c8e3203d 100644
--- a/lib/private/Share20/LegacyHooks.php
+++ b/lib/private/Share20/LegacyHooks.php
@@ -82,7 +82,7 @@ class LegacyHooks {
'itemSource' => $share->getNodeId(),
'shareType' => $shareType,
'shareWith' => $sharedWith,
- 'itemparent' => method_exists($share, 'getParent') ? $share->getParent() : '',
+ 'itemparent' => $share->getParent(),
'uidOwner' => $share->getSharedBy(),
'fileSource' => $share->getNodeId(),
'fileTarget' => $share->getTarget()
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 9bfa810b108..855bb173d56 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -7,6 +7,7 @@
*/
namespace OC\Share20;
+use OC\Core\AppInfo\ConfigLexicon;
use OC\Files\Mount\MoveableMount;
use OC\KnownUser\KnownUserService;
use OC\Share20\Exception\ProviderException;
@@ -580,13 +581,10 @@ class Manager implements IManager {
* @param IShare $share
*/
protected function setLinkParent(IShare $share) {
- // No sense in checking if the method is not there.
- if (method_exists($share, 'setParent')) {
- $storage = $share->getNode()->getStorage();
- if ($storage->instanceOfStorage(SharedStorage::class)) {
- /** @var \OCA\Files_Sharing\SharedStorage $storage */
- $share->setParent($storage->getShareId());
- }
+ $storage = $share->getNode()->getStorage();
+ if ($storage->instanceOfStorage(SharedStorage::class)) {
+ /** @var \OCA\Files_Sharing\SharedStorage $storage */
+ $share->setParent((int)$storage->getShareId());
}
}
@@ -705,12 +703,12 @@ class Manager implements IManager {
}
// Generate the target
- $defaultShareFolder = $this->config->getSystemValue('share_folder', '/');
- $allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
- if ($allowCustomShareFolder) {
- $shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $defaultShareFolder);
- } else {
- $shareFolder = $defaultShareFolder;
+ $shareFolder = $this->config->getSystemValue('share_folder', '/');
+ if ($share->getShareType() === IShare::TYPE_USER) {
+ $allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
+ if ($allowCustomShareFolder) {
+ $shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $shareFolder);
+ }
}
$target = $shareFolder . '/' . $share->getNode()->getName();
@@ -1008,7 +1006,6 @@ class Manager implements IManager {
/**
* Delete all the children of this share
- * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
*
* @param IShare $share
* @return IShare[] List of deleted shares
@@ -1939,7 +1936,7 @@ class Manager implements IManager {
}
public function allowCustomTokens(): bool {
- return $this->appConfig->getValueBool('core', 'shareapi_allow_custom_tokens', false);
+ return $this->appConfig->getValueBool('core', ConfigLexicon::SHARE_CUSTOM_TOKEN);
}
public function allowViewWithoutDownload(): bool {
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index 8caabb0898a..571efc8c4be 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -60,8 +60,7 @@ class Share implements IShare {
private $sendPasswordByTalk = false;
/** @var string */
private $token;
- /** @var int */
- private $parent;
+ private ?int $parent = null;
/** @var string */
private $target;
/** @var \DateTime */
@@ -526,25 +525,12 @@ class Share implements IShare {
return $this->token;
}
- /**
- * Set the parent of this share
- *
- * @param int $parent
- * @return IShare
- * @deprecated 12.0.0 The new shares do not have parents. This is just here for legacy reasons.
- */
- public function setParent($parent) {
+ public function setParent(int $parent): self {
$this->parent = $parent;
return $this;
}
- /**
- * Get the parent of this share.
- *
- * @return int
- * @deprecated 12.0.0 The new shares do not have parents. This is just here for legacy reasons.
- */
- public function getParent() {
+ public function getParent(): ?int {
return $this->parent;
}
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index de9df04ae4b..07e557d0706 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -70,6 +70,8 @@ class JSConfigHelper {
$userBackendAllowsPasswordConfirmation = $backend->canConfirmPassword($uid) && $this->canUserValidatePassword();
} elseif (isset($this->excludedUserBackEnds[$this->currentUser->getBackendClassName()])) {
$userBackendAllowsPasswordConfirmation = false;
+ } else {
+ $userBackendAllowsPasswordConfirmation = $this->canUserValidatePassword();
}
} else {
$uid = null;
diff --git a/lib/public/Calendar/ICreateFromString.php b/lib/public/Calendar/ICreateFromString.php
index 5badaa2d4cf..2bb0f2ffa20 100644
--- a/lib/public/Calendar/ICreateFromString.php
+++ b/lib/public/Calendar/ICreateFromString.php
@@ -17,9 +17,31 @@ use OCP\Calendar\Exceptions\CalendarException;
*/
interface ICreateFromString extends ICalendar {
/**
- * @since 23.0.0
+ * Create an event in this calendar from an ICS string.
+ *
+ * @param string $name the file name - needs to contain the .ics ending
+ * @param string $calendarData a string containing a valid VEVENT ics
*
* @throws CalendarException
+ *
+ * @since 23.0.0
+ *
*/
public function createFromString(string $name, string $calendarData): void;
+
+ /**
+ * Create an event in this calendar from an ICS string using a minimal CalDAV server.
+ * Usually, the createFromString() method should be preferred.
+ *
+ * However, in some cases it is useful to not set up a full CalDAV server.
+ * Missing features include no iMIP plugin, no invitation emails amongst others.
+ *
+ * @param string $name the file name - needs to contain the .ics ending
+ * @param string $calendarData a string containing a valid VEVENT ics
+ *
+ * @throws CalendarException
+ *
+ * @since 32.0.0
+ */
+ public function createFromStringMinimal(string $name, string $calendarData): void;
}
diff --git a/lib/public/Config/Lexicon/Entry.php b/lib/public/Config/Lexicon/Entry.php
index 0e6e664db36..c810522dde5 100644
--- a/lib/public/Config/Lexicon/Entry.php
+++ b/lib/public/Config/Lexicon/Entry.php
@@ -23,16 +23,20 @@ class Entry {
public const RENAME_INVERT_BOOLEAN = 1;
private string $definition = '';
+ private string $note = '';
private ?string $default = null;
/**
- * @param string $key config key, can only contain alphanumerical chars and -._
+ * @param string $key config key; can only contain alphanumerical chars and underscore "_"
* @param ValueType $type type of config value
+ * @param string|int|float|bool|array|Closure|null $defaultRaw default value to be used in case none known
* @param string $definition optional description of config key available when using occ command
* @param bool $lazy set config value as lazy
* @param int $flags set flags
- * @param string|null $rename previous config key to migrate config value from
* @param bool $deprecated set config key as deprecated
+ * @param string|null $rename source in case of a rename of a config key.
+ * @param int $options additional bitflag options {@see self::RENAME_INVERT_BOOLEAN}
+ * @param string $note additional note and warning related to the use of the config key.
*
* @since 32.0.0
* @psalm-suppress PossiblyInvalidCast
@@ -48,6 +52,7 @@ class Entry {
private readonly bool $deprecated = false,
private readonly ?string $rename = null,
private readonly int $options = 0,
+ string $note = '',
) {
// key can only contain alphanumeric chars and underscore "_"
if (preg_match('/[^[:alnum:]_]/', $key)) {
@@ -57,6 +62,7 @@ class Entry {
/** @psalm-suppress UndefinedClass */
if (\OC::$CLI) { // only store definition if ran from CLI
$this->definition = $definition;
+ $this->note = $note;
}
}
@@ -188,6 +194,16 @@ class Entry {
}
/**
+ * returns eventual note
+ *
+ * @return string
+ * @since 32.0.0
+ */
+ public function getNote(): string {
+ return $this->note;
+ }
+
+ /**
* returns if config key is set as lazy
*
* @see IAppConfig for details on lazy config values
diff --git a/lib/public/IAppConfig.php b/lib/public/IAppConfig.php
index 68d4332146e..d9e3e0d95a7 100644
--- a/lib/public/IAppConfig.php
+++ b/lib/public/IAppConfig.php
@@ -8,6 +8,7 @@ declare(strict_types=1);
*/
namespace OCP;
+use OCP\Config\ValueType;
use OCP\Exceptions\AppConfigUnknownKeyException;
/**
@@ -450,6 +451,33 @@ interface IAppConfig {
public function getDetails(string $app, string $key): array;
/**
+ * returns an array containing details about a config key.
+ * key/value pair are available only if it exists.
+ *
+ * ```
+ * [
+ * "app" => "myapp",
+ * "key" => "mykey",
+ * "value" => "current_value",
+ * "default" => "default_if_available",
+ * "definition" => "this is what it does",
+ * "note" => "enabling this is not compatible with that",
+ * "lazy" => false,
+ * "type" => 4,
+ * "typeString" => "string",
+ * 'sensitive' => false
+ * ]
+ * ```
+ *
+ * @param string $app id of the app
+ * @param string $key config key
+ *
+ * @return array{app: string, key: string, lazy?: bool, valueType?: ValueType, valueTypeName?: string, sensitive?: bool, default?: string, definition?: string, note?: string}
+ * @since 32.0.0
+ */
+ public function getKeyDetails(string $app, string $key): array;
+
+ /**
* Convert string like 'string', 'integer', 'float', 'bool' or 'array' to
* to bitflag {@see VALUE_STRING}, {@see VALUE_INT}, {@see VALUE_FLOAT},
* {@see VALUE_BOOL} and {@see VALUE_ARRAY}
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index 5d8c64e1314..a1bdb01fcd2 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -530,6 +530,20 @@ interface IShare {
public function getToken();
/**
+ * Set the parent of this share
+ *
+ * @since 9.0.0
+ */
+ public function setParent(int $parent): self;
+
+ /**
+ * Get the parent of this share.
+ *
+ * @since 9.0.0
+ */
+ public function getParent(): ?int;
+
+ /**
* Set the target path of this share relative to the recipients user folder.
*
* @param string $target
diff --git a/lib/public/Share/IShareProvider.php b/lib/public/Share/IShareProvider.php
index 9d7c8013a36..23187ca833e 100644
--- a/lib/public/Share/IShareProvider.php
+++ b/lib/public/Share/IShareProvider.php
@@ -208,4 +208,12 @@ interface IShareProvider {
* @since 18.0.0
*/
public function getAllShares(): iterable;
+
+ /**
+ * Get all children of this share
+ *
+ * @return IShare[]
+ * @since 9.0.0
+ */
+ public function getChildren(IShare $parent);
}