From 31df2a815666d8b6b3b5ed1b5fadffe91221d15e Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Mon, 16 Jun 2025 16:24:19 -0400 Subject: [PATCH 0001/5910] feat:button open file Signed-off-by: Crisciany Souza --- src/Components/RightSidebar/RequestSignatureTab.vue | 5 +++++ src/views/FilesList/FileEntry/FileEntryActions.vue | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index d1e4cda6db..3ac16563ab 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -58,6 +58,11 @@ @click="validationFile()"> {{ t('libresign', 'Validate') }} + + {{ t('libresign', 'Open file') }} + Date: Tue, 17 Jun 2025 19:24:54 -0400 Subject: [PATCH 0002/5910] chore: action open file Signed-off-by: Crisciany Souza --- .../RightSidebar/RequestSignatureTab.vue | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index 3ac16563ab..2ccc1940ff 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -58,9 +58,9 @@ @click="validationFile()"> {{ t('libresign', 'Validate') }} - + @click="openFile()"> {{ t('libresign', 'Open file') }} @@ -82,6 +82,7 @@ import { getCapabilities } from '@nextcloud/capabilities' import { showError, showSuccess } from '@nextcloud/dialogs' import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus' import { generateOcsUrl } from '@nextcloud/router' +import { loadState } from '@nextcloud/initial-state' import NcActionButton from '@nextcloud/vue/components/NcActionButton' import NcButton from '@nextcloud/vue/components/NcButton' @@ -126,6 +127,8 @@ export default { hasLoading: false, signerToEdit: {}, modalSrc: '', + document: {}, + hasInfo: false, } }, computed: { @@ -158,6 +161,9 @@ export default { beforeUnmount() { unsubscribe('libresign:edit-signer') }, + created() { + this.$set(this, 'document', loadState('libresign', 'file_info', {})) + }, methods: { isSignElementsAvailable() { return getCapabilities()?.libresign?.config?.['sign-elements']?.['is-available'] === true @@ -269,6 +275,22 @@ export default { }) this.hasLoading = false }, + openFile() { + if (OCA?.Viewer !== undefined) { + const fileInfo = { + source: this.document.file, + basename: this.document.name, + mime: 'application/pdf', + fileid: this.document.nodeId, + } + OCA.Viewer.open({ + fileInfo, + list: [fileInfo], + }) + } else { + window.open(`${this.document.file}?_t=${Date.now()}`) + } + }, }, } From f59219373c9100c12f0e29745dab2dc5e4efab3c Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Tue, 17 Jun 2025 19:41:53 -0400 Subject: [PATCH 0003/5910] chore: add on the three point to open file and lint corrections Signed-off-by: Crisciany Souza --- .../RightSidebar/RequestSignatureTab.vue | 5 ++-- .../FilesList/FileEntry/FileEntryActions.vue | 29 +++++++++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index 2ccc1940ff..2f1381838b 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -58,8 +58,7 @@ @click="validationFile()"> {{ t('libresign', 'Validate') }} - {{ t('libresign', 'Open file') }} @@ -81,8 +80,8 @@ import axios from '@nextcloud/axios' import { getCapabilities } from '@nextcloud/capabilities' import { showError, showSuccess } from '@nextcloud/dialogs' import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus' -import { generateOcsUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' +import { generateOcsUrl } from '@nextcloud/router' import NcActionButton from '@nextcloud/vue/components/NcActionButton' import NcButton from '@nextcloud/vue/components/NcButton' diff --git a/src/views/FilesList/FileEntry/FileEntryActions.vue b/src/views/FilesList/FileEntry/FileEntryActions.vue index 4608c90a49..9c29f81484 100644 --- a/src/views/FilesList/FileEntry/FileEntryActions.vue +++ b/src/views/FilesList/FileEntry/FileEntryActions.vue @@ -57,9 +57,11 @@ From 6666103222a25678c1ad60fca91c970c5b0e9df3 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 18 Jun 2025 02:32:29 +0000 Subject: [PATCH 0004/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/cs.js | 1 + l10n/cs.json | 1 + l10n/et_EE.js | 1 + l10n/et_EE.json | 1 + l10n/nl.js | 1 + l10n/nl.json | 1 + l10n/sr.js | 1 + l10n/sr.json | 1 + l10n/zh_TW.js | 1 + l10n/zh_TW.json | 1 + 10 files changed, 10 insertions(+) diff --git a/l10n/cs.js b/l10n/cs.js index 3e411d498d..65cc64fb2b 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -225,6 +225,7 @@ OC.L10N.register( "Sign" : "Podepsat", "Confirm" : "Potvrdit", "Request signatures?" : "Požádat o podpisy?", + "Edit visible signatures" : "Upravit viditelné podpisy", "Add signer" : "Přidat podepisujícího", "Send reminder" : "Odeslat připomínku", "Enter who will receive the request" : "Zadejte kdo obdrží požadavek", diff --git a/l10n/cs.json b/l10n/cs.json index 05a70c353b..d9370d5c95 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -223,6 +223,7 @@ "Sign" : "Podepsat", "Confirm" : "Potvrdit", "Request signatures?" : "Požádat o podpisy?", + "Edit visible signatures" : "Upravit viditelné podpisy", "Add signer" : "Přidat podepisujícího", "Send reminder" : "Odeslat připomínku", "Enter who will receive the request" : "Zadejte kdo obdrží požadavek", diff --git a/l10n/et_EE.js b/l10n/et_EE.js index 129ad60bb8..5ebdc490c2 100644 --- a/l10n/et_EE.js +++ b/l10n/et_EE.js @@ -105,6 +105,7 @@ OC.L10N.register( "Next" : "Järgmine", "Account does not exist" : "Kasutajakontot pole olemas", "Confirm" : "Kinnita", + "Edit visible signatures" : "Muuda nähtavaid allkirju", "Add signer" : "Lisa allkirjastaja", "Send reminder" : "Saada meeldetuletus", "Document not available for signature." : "Dokument pole allkirjastamiseks saadaval.", diff --git a/l10n/et_EE.json b/l10n/et_EE.json index 2337a7896f..b42cd7e51e 100644 --- a/l10n/et_EE.json +++ b/l10n/et_EE.json @@ -103,6 +103,7 @@ "Next" : "Järgmine", "Account does not exist" : "Kasutajakontot pole olemas", "Confirm" : "Kinnita", + "Edit visible signatures" : "Muuda nähtavaid allkirju", "Add signer" : "Lisa allkirjastaja", "Send reminder" : "Saada meeldetuletus", "Document not available for signature." : "Dokument pole allkirjastamiseks saadaval.", diff --git a/l10n/nl.js b/l10n/nl.js index 90325a3754..3732c4d57f 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -228,6 +228,7 @@ OC.L10N.register( "Yes" : "Ja", "No" : "Nee", "Reset to default" : "Herstellen naar standaard", + "Remove background" : "Achtergrond verwijderen", "Validation URL" : "Validatie-URL", "Sign with your email." : "Onderteken met uw e-mail.", "Request code." : "Vraag code aan.", diff --git a/l10n/nl.json b/l10n/nl.json index e9582fb736..1455d2abed 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -226,6 +226,7 @@ "Yes" : "Ja", "No" : "Nee", "Reset to default" : "Herstellen naar standaard", + "Remove background" : "Achtergrond verwijderen", "Validation URL" : "Validatie-URL", "Sign with your email." : "Onderteken met uw e-mail.", "Request code." : "Vraag code aan.", diff --git a/l10n/sr.js b/l10n/sr.js index 8b17fdbc66..44ba14a044 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Потпис", "Confirm" : "Потврди", "Request signatures?" : "Захтевај потписе?", + "Edit visible signatures" : "Уреди видљиве потписе", "Add signer" : "Додај потписника", "Send reminder" : "Пошаљи подсетник", "Enter who will receive the request" : "Унесите ко ће примити захтев", diff --git a/l10n/sr.json b/l10n/sr.json index 1de56e86bb..960ac1d54e 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -224,6 +224,7 @@ "Sign" : "Потпис", "Confirm" : "Потврди", "Request signatures?" : "Захтевај потписе?", + "Edit visible signatures" : "Уреди видљиве потписе", "Add signer" : "Додај потписника", "Send reminder" : "Пошаљи подсетник", "Enter who will receive the request" : "Унесите ко ће примити захтев", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index cecb5d1819..edb0a4ba39 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "簽署", "Confirm" : "確認", "Request signatures?" : "請求簽署?", + "Edit visible signatures" : "編輯可見的簽名", "Add signer" : "新增簽署者", "Send reminder" : "傳送提醒", "Enter who will receive the request" : "輸入誰會收到請求", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 15fd17f7e5..988b349b89 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -224,6 +224,7 @@ "Sign" : "簽署", "Confirm" : "確認", "Request signatures?" : "請求簽署?", + "Edit visible signatures" : "編輯可見的簽名", "Add signer" : "新增簽署者", "Send reminder" : "傳送提醒", "Enter who will receive the request" : "輸入誰會收到請求", From ac19f6e5b2bf9e9bcacbba7aca9ebafaaa68f6ed Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Wed, 18 Jun 2025 08:30:23 -0400 Subject: [PATCH 0005/5910] chore: remove primary option of the button "open file" Signed-off-by: Crisciany Souza --- src/Components/RightSidebar/RequestSignatureTab.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index 2f1381838b..fe14324101 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -58,7 +58,7 @@ @click="validationFile()"> {{ t('libresign', 'Validate') }} - {{ t('libresign', 'Open file') }} From c316b8d7950bb811a0e356300f943071204b6bfd Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Wed, 18 Jun 2025 08:36:02 -0400 Subject: [PATCH 0006/5910] fix: lint erro Signed-off-by: Crisciany Souza --- src/Components/RightSidebar/RequestSignatureTab.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue index fe14324101..54a13fc44b 100644 --- a/src/Components/RightSidebar/RequestSignatureTab.vue +++ b/src/Components/RightSidebar/RequestSignatureTab.vue @@ -58,8 +58,7 @@ @click="validationFile()"> {{ t('libresign', 'Validate') }} - + {{ t('libresign', 'Open file') }} From 7d553703a1b82c028ea5827de4b45bb7a82334c9 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 19 Jun 2025 02:31:57 +0000 Subject: [PATCH 0007/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/de.js | 1 + l10n/de.json | 1 + l10n/de_DE.js | 1 + l10n/de_DE.json | 1 + l10n/sv.js | 1 + l10n/sv.json | 1 + l10n/sw.js | 1 + l10n/sw.json | 1 + 8 files changed, 8 insertions(+) diff --git a/l10n/de.js b/l10n/de.js index 7f3c204a34..abc1608ef7 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Signiere", "Confirm" : "Bestätigen", "Request signatures?" : "Signaturen anfordern?", + "Edit visible signatures" : "Sichtbare Signaturen bearbeiten", "Add signer" : "Unterzeichner hinzufügen", "Send reminder" : "Erinnerung senden", "Enter who will receive the request" : "Gib ein, wer die Anfrage erhalten soll.", diff --git a/l10n/de.json b/l10n/de.json index 5d8d5e7440..b9d308aada 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -224,6 +224,7 @@ "Sign" : "Signiere", "Confirm" : "Bestätigen", "Request signatures?" : "Signaturen anfordern?", + "Edit visible signatures" : "Sichtbare Signaturen bearbeiten", "Add signer" : "Unterzeichner hinzufügen", "Send reminder" : "Erinnerung senden", "Enter who will receive the request" : "Gib ein, wer die Anfrage erhalten soll.", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 6cd402dfce..34cbc30323 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Signieren", "Confirm" : "Bestätigen", "Request signatures?" : "Signaturen anfordern?", + "Edit visible signatures" : "Sichtbare Signaturen bearbeiten", "Add signer" : "Unterzeichner hinzufügen", "Send reminder" : "Erinnerung senden", "Enter who will receive the request" : "Geben Sie ein, wer die Anfrage erhalten soll", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index c896460c2c..9d887eee9a 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -224,6 +224,7 @@ "Sign" : "Signieren", "Confirm" : "Bestätigen", "Request signatures?" : "Signaturen anfordern?", + "Edit visible signatures" : "Sichtbare Signaturen bearbeiten", "Add signer" : "Unterzeichner hinzufügen", "Send reminder" : "Erinnerung senden", "Enter who will receive the request" : "Geben Sie ein, wer die Anfrage erhalten soll", diff --git a/l10n/sv.js b/l10n/sv.js index 6e15dfdc2c..f3edef877a 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -225,6 +225,7 @@ OC.L10N.register( "Sign" : "Signera", "Confirm" : "Bekräfta", "Request signatures?" : "Begär underskrift?", + "Edit visible signatures" : "Redigera synliga signaturer", "Add signer" : "Lägg till undertecknare", "Send reminder" : "Skicka påminnelse", "Enter who will receive the request" : "Ange vem som kommer att ta emot begäran", diff --git a/l10n/sv.json b/l10n/sv.json index 7cb0e3db65..08f44544d7 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -223,6 +223,7 @@ "Sign" : "Signera", "Confirm" : "Bekräfta", "Request signatures?" : "Begär underskrift?", + "Edit visible signatures" : "Redigera synliga signaturer", "Add signer" : "Lägg till undertecknare", "Send reminder" : "Skicka påminnelse", "Enter who will receive the request" : "Ange vem som kommer att ta emot begäran", diff --git a/l10n/sw.js b/l10n/sw.js index ae80923d3d..67ad7e033a 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -25,6 +25,7 @@ OC.L10N.register( "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", + "Status" : "Wadhifa", "Actions" : "Utendekaji", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", diff --git a/l10n/sw.json b/l10n/sw.json index 29ee2179f8..63b385a14f 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -23,6 +23,7 @@ "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", + "Status" : "Wadhifa", "Actions" : "Utendekaji", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", From 15447354e19a24ba1e2cd5dbcf39b8a256155b9a Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Thu, 19 Jun 2025 11:35:20 -0300 Subject: [PATCH 0008/5910] chore: bump PHP dependencies Signed-off-by: Vitor Mattos --- composer.lock | 86 +++++++----- tests/integration/composer.lock | 155 +++++++++++---------- vendor-bin/coding-standard/composer.lock | 35 +++-- vendor-bin/openapi-extractor/composer.lock | 12 +- vendor-bin/php-coveralls/composer.lock | 52 +++---- vendor-bin/phpunit/composer.lock | 36 ++--- vendor-bin/psalm/composer.lock | 52 +++---- vendor-bin/rector/composer.lock | 36 ++--- 8 files changed, 247 insertions(+), 217 deletions(-) diff --git a/composer.lock b/composer.lock index 0ca942d3bb..09127751b0 100644 --- a/composer.lock +++ b/composer.lock @@ -1216,16 +1216,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -1238,7 +1238,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -1263,7 +1263,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -1279,7 +1279,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1625,12 +1625,12 @@ "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "90b2df140fe18a093e187253b4441bdb64bdb341" + "reference": "b67645781728716a3ee4c32b2636b1dc4b30d894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/90b2df140fe18a093e187253b4441bdb64bdb341", - "reference": "90b2df140fe18a093e187253b4441bdb64bdb341", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/b67645781728716a3ee4c32b2636b1dc4b30d894", + "reference": "b67645781728716a3ee4c32b2636b1dc4b30d894", "shasum": "" }, "require": { @@ -1666,7 +1666,7 @@ "issues": "https://github.com/nextcloud-deps/ocp/issues", "source": "https://github.com/nextcloud-deps/ocp/tree/master" }, - "time": "2025-05-18T00:55:47+00:00" + "time": "2025-06-19T00:53:32+00:00" }, { "name": "psr/clock", @@ -1825,12 +1825,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "0cc529f6cf08a858fcb7a2c5617780fcdc20d1fe" + "reference": "7dacc91c92dcf3b81a600376d2a2f693eff91e35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0cc529f6cf08a858fcb7a2c5617780fcdc20d1fe", - "reference": "0cc529f6cf08a858fcb7a2c5617780fcdc20d1fe", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7dacc91c92dcf3b81a600376d2a2f693eff91e35", + "reference": "7dacc91c92dcf3b81a600376d2a2f693eff91e35", "shasum": "" }, "conflict": { @@ -1890,11 +1890,12 @@ "bagisto/bagisto": "<2.1", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.2", + "barryvdh/laravel-translation-manager": "<0.6.8", "barzahlen/barzahlen-php": "<2.0.1", "baserproject/basercms": "<=5.1.1", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bbpress/bbpress": "<2.6.5", + "bcit-ci/codeigniter": "<3.1.3", "bcosca/fatfree": "<3.7.2", "bedita/bedita": "<4", "bednee/cooluri": "<1.0.30", @@ -1930,13 +1931,14 @@ "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "chrome-php/chrome": "<1.14", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", "ckeditor/ckeditor": "<4.25", - "clickstorm/cs-seo": ">=6,<6.7|>=7,<7.4|>=8,<8.3|>=9,<9.2", + "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", "co-stack/fal_sftp": "<0.2.6", "cockpit-hq/cockpit": "<2.7|==2.7", "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<3.1.9", + "codeigniter/framework": "<3.1.10", "codeigniter4/framework": "<4.5.8", "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", @@ -1955,6 +1957,7 @@ "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", + "couleurcitron/tarteaucitron-wp": "<0.3", "craftcms/cms": "<4.15.3|>=5,<5.7.5", "croogo/croogo": "<4", "cuyz/valinor": "<0.12", @@ -1990,9 +1993,12 @@ "dolibarr/dolibarr": "<19.0.2|==21.0.0.0-beta", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", + "drupal/admin_audit_trail": "<1.0.5", "drupal/ai": "<1.0.5", "drupal/alogin": "<2.0.6", "drupal/cache_utility": "<1.2.1", + "drupal/commerce_alphabank_redirect": "<1.0.3", + "drupal/commerce_eurobank_redirect": "<2.1.1", "drupal/config_split": "<1.10|>=2,<2.0.2", "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", @@ -2001,11 +2007,13 @@ "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", "drupal/google_tag": "<1.8|>=2,<2.0.8", "drupal/ignition": "<1.0.4", + "drupal/lightgallery": "<1.6", "drupal/link_field_display_mode_formatter": "<1.6", "drupal/matomo": "<1.24", "drupal/oauth2_client": "<4.1.3", "drupal/oauth2_server": "<2.1", "drupal/obfuscate": "<2.0.1", + "drupal/quick_node_block": "<2", "drupal/rapidoc_elements_field_formatter": "<1.0.1", "drupal/spamspan": "<3.2.1", "drupal/tfa": "<1.10", @@ -2018,6 +2026,7 @@ "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", "elijaa/phpmemcacheadmin": "<=1.3", + "elmsln/haxcms": "<11", "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", "enhavo/enhavo-app": "<=0.13.1", @@ -2032,8 +2041,8 @@ "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.38|>=3.3,<3.3.39", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", "ezsystems/ezplatform-http-cache": "<2.3.16", "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", @@ -2115,6 +2124,7 @@ "guzzlehttp/oauth-subscriber": "<0.8.1", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "handcraftedinthealps/goodby-csv": "<1.4.3", "harvesthq/chosen": "<1.8.7", "helloxz/imgurl": "<=2.31", "hhxsv5/laravel-s": "<3.7.36", @@ -2124,9 +2134,10 @@ "hov/jobfair": "<1.0.13|>=2,<2.0.2", "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.14", + "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.21", + "ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21", "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", - "ibexa/fieldtype-richtext": ">=4.6,<4.6.19", + "ibexa/fieldtype-richtext": ">=4.6,<4.6.21", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/http-cache": ">=4.6,<4.6.14", "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", @@ -2143,7 +2154,7 @@ "imdbphp/imdbphp": "<=5.1.1", "impresscms/impresscms": "<=1.4.5", "impresspages/impresspages": "<1.0.13", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", + "in2code/femanager": "<5.5.5|>=6,<6.4.1|>=7,<7.4.2|>=8,<8.2.2", "in2code/ipandlanguageredirect": "<5.1.2", "in2code/lux": "<17.6.1|>=18,<24.0.2", "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.4.1", @@ -2176,7 +2187,7 @@ "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", - "juzaweb/cms": "<=3.4", + "juzaweb/cms": "<=3.4.2", "jweiland/events2": "<8.3.8|>=9,<9.0.6", "jweiland/kk-downloader": "<1.2.2", "kazist/phpwhois": "<=4.2.6", @@ -2222,6 +2233,7 @@ "livewire/volt": "<1.7", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "lomkit/laravel-rest-api": "<2.13", "luracast/restler": "<3.1", "luyadev/yii-helpers": "<1.2.1", "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", @@ -2239,7 +2251,7 @@ "marcwillmann/turn": "<0.3.3", "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.3", + "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", @@ -2296,6 +2308,7 @@ "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", "nilsteampassnet/teampass": "<3.1.3.1-dev", + "nitsan/ns-backup": "<13.0.1", "nonfiction/nterchange": "<4.1.1", "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", @@ -2360,6 +2373,7 @@ "phpmyadmin/phpmyadmin": "<5.2.2", "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", "phpoffice/common": "<0.2.9", + "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", "phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", @@ -2420,11 +2434,13 @@ "really-simple-plugins/complianz-gdpr": "<6.4.2", "redaxo/source": "<5.18.3", "remdex/livehelperchat": "<4.29", + "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", "reportico-web/reportico": "<=8.1", "rhukster/dom-sanitizer": "<1.0.7", "rmccue/requests": ">=1.6,<1.8", "robrichards/xmlseclibs": ">=1,<3.0.4", "roots/soil": "<4.1", + "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", "rudloff/alltube": "<3.0.3", "rudloff/rtmpdump-bin": "<=2.3.1", "s-cart/core": "<6.9", @@ -2474,7 +2490,7 @@ "simplesamlphp/xml-security": "==1.6.11", "simplito/elliptic-php": "<1.0.6", "sitegeist/fluid-components": "<3.5", - "sjbr/sr-feuser-register": "<2.6.2", + "sjbr/sr-feuser-register": "<2.6.2|>=5.1,<12.5", "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", "sjbr/static-info-tables": "<2.3.1", "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", @@ -2492,7 +2508,7 @@ "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", "ssddanbrown/bookstack": "<24.05.1", - "starcitizentools/citizen-skin": ">=2.6.3,<2.31", + "starcitizentools/citizen-skin": ">=2.4.2,<3.3.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2", "statamic/cms": "<=5.16", "stormpath/sdk": "<9.9.99", @@ -2548,6 +2564,8 @@ "symfony/translation": ">=2,<2.0.17", "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/ux-autocomplete": "<2.11.2", + "symfony/ux-live-component": "<2.25.1", + "symfony/ux-twig-component": "<2.25.1", "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", @@ -2585,10 +2603,10 @@ "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<=12.4.30|>=13,<=13.4.11", "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.48|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", "typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", @@ -2601,6 +2619,8 @@ "typo3/cms-lowlevel": ">=11,<=11.5.41", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/cms-scheduler": ">=11,<=11.5.41", + "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -2672,7 +2692,7 @@ "yiisoft/yii2-elasticsearch": "<2.0.5", "yiisoft/yii2-gii": "<=2.2.4", "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", + "yiisoft/yii2-redis": "<2.0.20", "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", @@ -2751,7 +2771,7 @@ "type": "tidelift" } ], - "time": "2025-05-17T16:05:20+00:00" + "time": "2025-06-18T19:04:39+00:00" } ], "aliases": [], @@ -2762,10 +2782,10 @@ }, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/tests/integration/composer.lock b/tests/integration/composer.lock index 1a4cb7287a..049a276130 100644 --- a/tests/integration/composer.lock +++ b/tests/integration/composer.lock @@ -100,16 +100,16 @@ }, { "name": "behat/gherkin", - "version": "v4.13.0", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "9294d26bb75f1718441b89f3a10e15ecb2c67f70" + "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/9294d26bb75f1718441b89f3a10e15ecb2c67f70", - "reference": "9294d26bb75f1718441b89f3a10e15ecb2c67f70", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4", + "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4", "shasum": "" }, "require": { @@ -119,6 +119,7 @@ "require-dev": { "cucumber/gherkin-monorepo": "dev-gherkin-v32.1.1", "friendsofphp/php-cs-fixer": "^3.65", + "mikey179/vfsstream": "^1.6", "phpstan/extension-installer": "^1", "phpstan/phpstan": "^2", "phpstan/phpstan-phpunit": "^2", @@ -162,9 +163,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.13.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.14.0" }, - "time": "2025-05-06T15:26:21+00:00" + "time": "2025-05-23T15:06:40+00:00" }, { "name": "clue/stream-filter", @@ -888,16 +889,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -940,9 +941,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "phar-io/manifest", @@ -3344,16 +3345,16 @@ }, { "name": "symfony/config", - "version": "v6.4.14", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef" + "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4e55e7e4ffddd343671ea972216d4509f46c22ef", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef", + "url": "https://api.github.com/repos/symfony/config/zipball/af5917a3b1571f54689e56677a3f06440d2fe4c7", + "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7", "shasum": "" }, "require": { @@ -3399,7 +3400,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.14" + "source": "https://github.com/symfony/config/tree/v6.4.22" }, "funding": [ { @@ -3415,20 +3416,20 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:33:53+00:00" + "time": "2025-05-14T06:00:01+00:00" }, { "name": "symfony/console", - "version": "v6.4.21", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719" + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a3011c7b7adb58d89f6c0d822abb641d7a5f9719", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719", + "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", "shasum": "" }, "require": { @@ -3493,7 +3494,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.21" + "source": "https://github.com/symfony/console/tree/v6.4.22" }, "funding": [ { @@ -3509,20 +3510,20 @@ "type": "tidelift" } ], - "time": "2025-04-07T15:42:41+00:00" + "time": "2025-05-07T07:05:04+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.20", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "c49796a9184a532843e78e50df9e55708b92543a" + "reference": "8cb11f833d1f5bfbb2df97dfc23c92b4d42c18d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c49796a9184a532843e78e50df9e55708b92543a", - "reference": "c49796a9184a532843e78e50df9e55708b92543a", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8cb11f833d1f5bfbb2df97dfc23c92b4d42c18d9", + "reference": "8cb11f833d1f5bfbb2df97dfc23c92b4d42c18d9", "shasum": "" }, "require": { @@ -3574,7 +3575,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.20" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.22" }, "funding": [ { @@ -3590,20 +3591,20 @@ "type": "tidelift" } ], - "time": "2025-03-13T09:55:08+00:00" + "time": "2025-05-17T07:35:26+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -3616,7 +3617,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -3641,7 +3642,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -3657,7 +3658,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", @@ -3741,16 +3742,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -3764,7 +3765,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -3797,7 +3798,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -3813,7 +3814,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", @@ -3976,16 +3977,16 @@ }, { "name": "symfony/http-client-contracts", - "version": "v3.5.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645" + "reference": "75d7043853a42837e68111812f4d964b01e5101c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ee8d807ab20fcb51267fdace50fbe3494c31e645", - "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", + "reference": "75d7043853a42837e68111812f4d964b01e5101c", "shasum": "" }, "require": { @@ -3998,7 +3999,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4034,7 +4035,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.2" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" }, "funding": [ { @@ -4050,7 +4051,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:49:48+00:00" + "time": "2025-04-29T11:18:49+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4373,16 +4374,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -4400,7 +4401,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4436,7 +4437,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -4452,7 +4453,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/string", @@ -4542,16 +4543,16 @@ }, { "name": "symfony/translation", - "version": "v6.4.21", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bb92ea5588396b319ba43283a5a3087a034cb29c" + "reference": "7e3b3b7146c6fab36ddff304a8041174bf6e17ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bb92ea5588396b319ba43283a5a3087a034cb29c", - "reference": "bb92ea5588396b319ba43283a5a3087a034cb29c", + "url": "https://api.github.com/repos/symfony/translation/zipball/7e3b3b7146c6fab36ddff304a8041174bf6e17ad", + "reference": "7e3b3b7146c6fab36ddff304a8041174bf6e17ad", "shasum": "" }, "require": { @@ -4617,7 +4618,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.21" + "source": "https://github.com/symfony/translation/tree/v6.4.22" }, "funding": [ { @@ -4633,20 +4634,20 @@ "type": "tidelift" } ], - "time": "2025-04-07T19:02:30+00:00" + "time": "2025-05-29T07:06:44+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "shasum": "" }, "require": { @@ -4659,7 +4660,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4695,7 +4696,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" }, "funding": [ { @@ -4711,20 +4712,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-27T08:32:26+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.21", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "717e7544aa99752c54ecba5c0e17459c48317472" + "reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/717e7544aa99752c54ecba5c0e17459c48317472", - "reference": "717e7544aa99752c54ecba5c0e17459c48317472", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f28cf841f5654955c9f88ceaf4b9dc29571988a9", + "reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9", "shasum": "" }, "require": { @@ -4772,7 +4773,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.21" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.22" }, "funding": [ { @@ -4788,7 +4789,7 @@ "type": "tidelift" } ], - "time": "2025-04-27T21:06:26+00:00" + "time": "2025-05-14T13:00:13+00:00" }, { "name": "symfony/yaml", diff --git a/vendor-bin/coding-standard/composer.lock b/vendor-bin/coding-standard/composer.lock index 1d0dd9c2bb..6df76ac301 100644 --- a/vendor-bin/coding-standard/composer.lock +++ b/vendor-bin/coding-standard/composer.lock @@ -9,16 +9,16 @@ "packages-dev": [ { "name": "kubawerlos/php-cs-fixer-custom-fixers", - "version": "v3.25.0", + "version": "v3.27.0", "source": { "type": "git", "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", - "reference": "50e070e5457ca4570e032207d201b3874aaff942" + "reference": "d860473d16b906c7945206177edc7d112357a706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/50e070e5457ca4570e032207d201b3874aaff942", - "reference": "50e070e5457ca4570e032207d201b3874aaff942", + "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/d860473d16b906c7945206177edc7d112357a706", + "reference": "d860473d16b906c7945206177edc7d112357a706", "shasum": "" }, "require": { @@ -49,27 +49,33 @@ "description": "A set of custom fixers for PHP CS Fixer", "support": { "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", - "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.25.0" + "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.27.0" }, - "time": "2025-05-06T20:12:43+00:00" + "funding": [ + { + "url": "https://github.com/kubawerlos", + "type": "github" + } + ], + "time": "2025-06-10T20:53:07+00:00" }, { "name": "nextcloud/coding-standard", - "version": "v1.3.2", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/nextcloud/coding-standard.git", - "reference": "9c719c4747fa26efc12f2e8b21c14a9a75c6ba6d" + "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/9c719c4747fa26efc12f2e8b21c14a9a75c6ba6d", - "reference": "9c719c4747fa26efc12f2e8b21c14a9a75c6ba6d", + "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/8e06808c1423e9208d63d1bd205b9a38bd400011", + "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011", "shasum": "" }, "require": { "kubawerlos/php-cs-fixer-custom-fixers": "^3.22", - "php": "^7.3|^8.0", + "php": "^8.0", "php-cs-fixer/shim": "^3.17" }, "type": "library", @@ -89,11 +95,14 @@ } ], "description": "Nextcloud coding standards for the php cs fixer", + "keywords": [ + "dev" + ], "support": { "issues": "https://github.com/nextcloud/coding-standard/issues", - "source": "https://github.com/nextcloud/coding-standard/tree/v1.3.2" + "source": "https://github.com/nextcloud/coding-standard/tree/v1.4.0" }, - "time": "2024-10-14T16:49:05+00:00" + "time": "2025-06-19T12:27:27+00:00" }, { "name": "php-cs-fixer/shim", diff --git a/vendor-bin/openapi-extractor/composer.lock b/vendor-bin/openapi-extractor/composer.lock index 3f13dd38d8..4448f8ac6d 100644 --- a/vendor-bin/openapi-extractor/composer.lock +++ b/vendor-bin/openapi-extractor/composer.lock @@ -129,16 +129,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -181,9 +181,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "phpstan/phpdoc-parser", diff --git a/vendor-bin/php-coveralls/composer.lock b/vendor-bin/php-coveralls/composer.lock index 0a81c03720..0cb1d739ea 100644 --- a/vendor-bin/php-coveralls/composer.lock +++ b/vendor-bin/php-coveralls/composer.lock @@ -725,16 +725,16 @@ }, { "name": "symfony/config", - "version": "v6.4.14", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef" + "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4e55e7e4ffddd343671ea972216d4509f46c22ef", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef", + "url": "https://api.github.com/repos/symfony/config/zipball/af5917a3b1571f54689e56677a3f06440d2fe4c7", + "reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7", "shasum": "" }, "require": { @@ -780,7 +780,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.14" + "source": "https://github.com/symfony/config/tree/v6.4.22" }, "funding": [ { @@ -796,20 +796,20 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:33:53+00:00" + "time": "2025-05-14T06:00:01+00:00" }, { "name": "symfony/console", - "version": "v6.4.21", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719" + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a3011c7b7adb58d89f6c0d822abb641d7a5f9719", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719", + "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", "shasum": "" }, "require": { @@ -874,7 +874,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.21" + "source": "https://github.com/symfony/console/tree/v6.4.22" }, "funding": [ { @@ -890,20 +890,20 @@ "type": "tidelift" } ], - "time": "2025-04-07T15:42:41+00:00" + "time": "2025-05-07T07:05:04+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -916,7 +916,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -941,7 +941,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -957,7 +957,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", @@ -1346,16 +1346,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -1373,7 +1373,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -1409,7 +1409,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -1425,7 +1425,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", diff --git a/vendor-bin/phpunit/composer.lock b/vendor-bin/phpunit/composer.lock index 9db2b7b115..57e67a2b23 100644 --- a/vendor-bin/phpunit/composer.lock +++ b/vendor-bin/phpunit/composer.lock @@ -166,16 +166,16 @@ }, { "name": "donatj/mock-webserver", - "version": "v2.7.2", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/donatj/mock-webserver.git", - "reference": "1887dcbd8b4a52dde23a43f0d303c4509a065e83" + "reference": "5cc49c1ae0d63d286227d6d729a33874f78a1068" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/donatj/mock-webserver/zipball/1887dcbd8b4a52dde23a43f0d303c4509a065e83", - "reference": "1887dcbd8b4a52dde23a43f0d303c4509a065e83", + "url": "https://api.github.com/repos/donatj/mock-webserver/zipball/5cc49c1ae0d63d286227d6d729a33874f78a1068", + "reference": "5cc49c1ae0d63d286227d6d729a33874f78a1068", "shasum": "" }, "require": { @@ -185,7 +185,7 @@ "ralouphie/getallheaders": "~2.0 || ~3.0" }, "require-dev": { - "corpus/coding-standard": "^0.6.0 || ^0.8.0", + "corpus/coding-standard": "^0.6.0 || ^0.9.0", "donatj/drop": "^1.0", "ext-curl": "*", "friendsofphp/php-cs-fixer": "^3.1", @@ -222,7 +222,7 @@ ], "support": { "issues": "https://github.com/donatj/mock-webserver/issues", - "source": "https://github.com/donatj/mock-webserver/tree/v2.7.2" + "source": "https://github.com/donatj/mock-webserver/tree/v2.7.3" }, "funding": [ { @@ -238,7 +238,7 @@ "type": "ko_fi" } ], - "time": "2024-01-22T20:41:09+00:00" + "time": "2025-06-09T20:44:17+00:00" }, { "name": "guzzlehttp/psr7", @@ -472,16 +472,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -524,9 +524,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "phar-io/manifest", @@ -976,12 +976,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "68984c5f8463717d4da3494c15cadd8d155d46c0" + "reference": "a2b49aac934bb0c88ae715e24ca9739f4df014b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/68984c5f8463717d4da3494c15cadd8d155d46c0", - "reference": "68984c5f8463717d4da3494c15cadd8d155d46c0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2b49aac934bb0c88ae715e24ca9739f4df014b1", + "reference": "a2b49aac934bb0c88ae715e24ca9739f4df014b1", "shasum": "" }, "require": { @@ -1077,7 +1077,7 @@ "type": "tidelift" } ], - "time": "2025-05-14T13:32:40+00:00" + "time": "2025-06-18T11:49:00+00:00" }, { "name": "psr/http-client", @@ -2310,7 +2310,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0-BETA1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index d8ea6f0087..756a1a05f3 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/composer.lock @@ -1617,16 +1617,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -1669,9 +1669,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2315,16 +2315,16 @@ }, { "name": "symfony/console", - "version": "v6.4.21", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719" + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a3011c7b7adb58d89f6c0d822abb641d7a5f9719", - "reference": "a3011c7b7adb58d89f6c0d822abb641d7a5f9719", + "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", "shasum": "" }, "require": { @@ -2389,7 +2389,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.21" + "source": "https://github.com/symfony/console/tree/v6.4.22" }, "funding": [ { @@ -2405,20 +2405,20 @@ "type": "tidelift" } ], - "time": "2025-04-07T15:42:41+00:00" + "time": "2025-05-07T07:05:04+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -2431,7 +2431,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -2456,7 +2456,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -2472,7 +2472,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", @@ -2861,16 +2861,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -2888,7 +2888,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -2924,7 +2924,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -2940,7 +2940,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/string", diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index dd8788cdbb..2394de754b 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/composer.lock @@ -9,16 +9,16 @@ "packages-dev": [ { "name": "nextcloud/ocp", - "version": "v31.0.5", + "version": "v31.0.6", "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "a6103c4f1f65ef53dded3af4b8f2fdfcb51beb56" + "reference": "bec55048b46eadbd2c564f2b26c9486a43f958c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/a6103c4f1f65ef53dded3af4b8f2fdfcb51beb56", - "reference": "a6103c4f1f65ef53dded3af4b8f2fdfcb51beb56", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/bec55048b46eadbd2c564f2b26c9486a43f958c2", + "reference": "bec55048b46eadbd2c564f2b26c9486a43f958c2", "shasum": "" }, "require": { @@ -51,9 +51,9 @@ "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API", "support": { "issues": "https://github.com/nextcloud-deps/ocp/issues", - "source": "https://github.com/nextcloud-deps/ocp/tree/v31.0.5" + "source": "https://github.com/nextcloud-deps/ocp/tree/v31.0.6" }, - "time": "2025-05-07T00:51:25+00:00" + "time": "2025-05-28T00:52:27+00:00" }, { "name": "nextcloud/rector", @@ -122,16 +122,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.16", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b8c1cf533cba0c305d91c6ccd23f3dd0566ba5f9" + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b8c1cf533cba0c305d91c6ccd23f3dd0566ba5f9", - "reference": "b8c1cf533cba0c305d91c6ccd23f3dd0566ba5f9", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", "shasum": "" }, "require": { @@ -176,7 +176,7 @@ "type": "github" } ], - "time": "2025-05-16T09:40:10+00:00" + "time": "2025-05-21T20:55:28+00:00" }, { "name": "psr/clock", @@ -381,21 +381,21 @@ }, { "name": "rector/rector", - "version": "2.0.16", + "version": "2.0.18", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2" + "reference": "be3a452085b524a04056e3dfe72d861948711062" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2", - "reference": "f1366d1f8c7490541c8f7af6e5c7cef7cca1b5a2", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/be3a452085b524a04056e3dfe72d861948711062", + "reference": "be3a452085b524a04056e3dfe72d861948711062", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.14" + "phpstan/phpstan": "^2.1.17" }, "conflict": { "rector/rector-doctrine": "*", @@ -428,7 +428,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.0.16" + "source": "https://github.com/rectorphp/rector/tree/2.0.18" }, "funding": [ { @@ -436,7 +436,7 @@ "type": "github" } ], - "time": "2025-05-12T16:37:16+00:00" + "time": "2025-06-11T11:19:37+00:00" }, { "name": "webmozart/assert", From 7bdd35bc2f731b67d502bb31463c2d79859629f7 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Thu, 19 Jun 2025 11:36:00 -0300 Subject: [PATCH 0009/5910] chore: apply newest version of nextcloud coding-standard Signed-off-by: Vitor Mattos --- lib/Controller/SignFileController.php | 10 ++++---- .../SignatureElementsController.php | 4 ++-- .../CertificateEngine/CfsslHandler.php | 22 ++++++++--------- lib/Handler/CfsslServerHandler.php | 4 ++-- lib/Handler/SignEngine/JSignPdfHandler.php | 14 +++++------ lib/Service/AccountService.php | 6 ++--- lib/Service/FileService.php | 10 ++++---- .../IdentifyMethod/AbstractIdentifyMethod.php | 4 ++-- lib/Service/Install/InstallService.php | 14 +++++------ lib/Service/SignatureTextService.php | 12 +++++----- tests/php/Unit/Helper/ValidateHelperTest.php | 4 ++-- tests/php/Unit/Service/AccountServiceTest.php | 8 +++---- tests/php/Unit/Service/MailServiceTest.php | 8 +++---- .../php/Unit/Service/SignFileServiceTest.php | 24 +++++++++---------- .../SignatureBackgroundServiceTest.php | 20 ++++++++-------- 15 files changed, 82 insertions(+), 82 deletions(-) diff --git a/lib/Controller/SignFileController.php b/lib/Controller/SignFileController.php index 74ec82dea2..344e77e900 100644 --- a/lib/Controller/SignFileController.php +++ b/lib/Controller/SignFileController.php @@ -119,9 +119,9 @@ public function sign(string $method, array $elements = [], string $identifyValue ->setLibreSignFile($libreSignFile) ->setSignRequest($signRequest) ->setUserUniqueIdentifier( - $identifyMethod->getEntity()->getIdentifierKey() . - ':' . - $identifyMethod->getEntity()->getIdentifierValue() + $identifyMethod->getEntity()->getIdentifierKey() + . ':' + . $identifyMethod->getEntity()->getIdentifierValue() ) ->setFriendlyName($signRequest->getDisplayName()) ->storeUserMetadata([ @@ -167,8 +167,8 @@ public function sign(string $method, array $elements = [], string $identifyValue default: $this->logger->error($message, ['exception' => $th]); $data['errors'] = [[ - 'message' => - sprintf(<< sprintf(<< $message, - 'elements' => - ( + 'elements' + => ( $this->userSession->getUser() instanceof IUser ? $this->signerElementsService->getUserElements($this->userSession->getUser()->getUID()) : $this->signerElementsService->getElementsFromSessionAsArray() diff --git a/lib/Handler/CertificateEngine/CfsslHandler.php b/lib/Handler/CertificateEngine/CfsslHandler.php index 69591fc8f3..8ad6fb4480 100644 --- a/lib/Handler/CertificateEngine/CfsslHandler.php +++ b/lib/Handler/CertificateEngine/CfsslHandler.php @@ -196,9 +196,9 @@ private function newCert(): array { private function genkey(): void { $binary = $this->getBinary(); $configPath = $this->getConfigPath(); - $cmd = $binary . ' genkey ' . - '-initca=true ' . $configPath . DIRECTORY_SEPARATOR . 'csr_server.json | ' . - $binary . 'json -bare ' . $configPath . DIRECTORY_SEPARATOR . 'ca;'; + $cmd = $binary . ' genkey ' + . '-initca=true ' . $configPath . DIRECTORY_SEPARATOR . 'csr_server.json | ' + . $binary . 'json -bare ' . $configPath . DIRECTORY_SEPARATOR . 'ca;'; shell_exec($cmd); } @@ -258,10 +258,10 @@ private function wakeUp(): void { throw new LibresignException('CFSSL not configured.'); } $this->cfsslServerHandler->updateExpirity($this->expirity()); - $cmd = 'nohup ' . $binary . ' serve -address=127.0.0.1 ' . - '-ca-key ' . $configPath . DIRECTORY_SEPARATOR . 'ca-key.pem ' . - '-ca ' . $configPath . DIRECTORY_SEPARATOR . 'ca.pem ' . - '-config ' . $configPath . DIRECTORY_SEPARATOR . 'config_server.json > /dev/null 2>&1 & echo $!'; + $cmd = 'nohup ' . $binary . ' serve -address=127.0.0.1 ' + . '-ca-key ' . $configPath . DIRECTORY_SEPARATOR . 'ca-key.pem ' + . '-ca ' . $configPath . DIRECTORY_SEPARATOR . 'ca.pem ' + . '-config ' . $configPath . DIRECTORY_SEPARATOR . 'config_server.json > /dev/null 2>&1 & echo $!'; shell_exec($cmd); $loops = 0; while (!$this->portOpen() && $loops <= 4) { @@ -286,10 +286,10 @@ private function portOpen(): bool { private function getServerPid(): int { $cmd = 'ps -eo pid,command|'; - $cmd .= 'grep "cfssl.*serve.*-address"|' . - 'grep -v grep|' . - 'grep -v defunct|' . - 'sed -e "s/^[[:space:]]*//"|cut -d" " -f1'; + $cmd .= 'grep "cfssl.*serve.*-address"|' + . 'grep -v grep|' + . 'grep -v defunct|' + . 'sed -e "s/^[[:space:]]*//"|cut -d" " -f1'; $output = shell_exec($cmd); if (!is_string($output)) { return 0; diff --git a/lib/Handler/CfsslServerHandler.php b/lib/Handler/CfsslServerHandler.php index 5f74038ba8..a3bd8a5546 100644 --- a/lib/Handler/CfsslServerHandler.php +++ b/lib/Handler/CfsslServerHandler.php @@ -72,8 +72,8 @@ private function putCsrServer( $response = file_put_contents($this->csrServerFile, json_encode($content)); if ($response === false) { throw new LibresignException( - "Error while writing CSR server file.\n" . - 'Remove the CFSSL API URI and Config path to use the default values.', + "Error while writing CSR server file.\n" + . 'Remove the CFSSL API URI and Config path to use the default values.', 500 ); } diff --git a/lib/Handler/SignEngine/JSignPdfHandler.php b/lib/Handler/SignEngine/JSignPdfHandler.php index 8b20814f71..d60cbac42d 100644 --- a/lib/Handler/SignEngine/JSignPdfHandler.php +++ b/lib/Handler/SignEngine/JSignPdfHandler.php @@ -79,9 +79,9 @@ public function getJSignParam(): JSignParam { throw new \Exception('Invalid Java binary. Run occ libresign:install --java'); } $this->jSignParam->setJavaPath( - $this->getEnvironments() . - $javaPath . - ' -Duser.home=' . escapeshellarg($this->getHome()) . ' ' + $this->getEnvironments() + . $javaPath + . ' -Duser.home=' . escapeshellarg($this->getHome()) . ' ' ); } } @@ -254,8 +254,8 @@ private function signUsingVisibleElements(): string { } $param->setJSignParameters( - $originalParam->getJSignParameters() . - $this->listParamsToString($params) + $originalParam->getJSignParameters() + . $this->listParamsToString($params) ); $jSignPdf->setParam($param); $signed = $this->signWrapper($jSignPdf); @@ -406,8 +406,8 @@ private function signWrapper(JSignPDF $jSignPDF): string { $param = $this->getJSignParam(); $param ->setJSignParameters( - $this->jSignParam->getJSignParameters() . - ' --hash-algorithm ' . $this->getHashAlgorithm() + $this->jSignParam->getJSignParameters() + . ' --hash-algorithm ' . $this->getHashAlgorithm() ); $jSignPDF->setParam($param); return $jSignPDF->sign(); diff --git a/lib/Service/AccountService.php b/lib/Service/AccountService.php index c2e1e42df0..64e31efb9a 100644 --- a/lib/Service/AccountService.php +++ b/lib/Service/AccountService.php @@ -489,9 +489,9 @@ public function deleteSignatureElement(?IUser $user, string $sessionId, int $nod */ public function uploadPfx(array $file, IUser $user): void { if ( - $file['error'] !== 0 || - !is_uploaded_file($file['tmp_name']) || - Filesystem::isFileBlacklisted($file['tmp_name']) + $file['error'] !== 0 + || !is_uploaded_file($file['tmp_name']) + || Filesystem::isFileBlacklisted($file['tmp_name']) ) { // TRANSLATORS Error when the uploaded certificate file is not valid throw new InvalidArgumentException($this->l10n->t('Invalid file provided. Need to be a .pfx file.')); diff --git a/lib/Service/FileService.php b/lib/Service/FileService.php index e59993a5de..9aad4da827 100644 --- a/lib/Service/FileService.php +++ b/lib/Service/FileService.php @@ -195,9 +195,9 @@ public function setFileFromRequest(?array $file): self { throw new InvalidArgumentException($this->l10n->t('No file provided')); } if ( - $file['error'] !== 0 || - !is_uploaded_file($file['tmp_name']) || - Filesystem::isFileBlacklisted($file['tmp_name']) + $file['error'] !== 0 + || !is_uploaded_file($file['tmp_name']) + || Filesystem::isFileBlacklisted($file['tmp_name']) ) { unlink($file['tmp_name']); throw new InvalidArgumentException($this->l10n->t('Invalid file provided')); @@ -736,8 +736,8 @@ private function associateAllAndFormat(IUser $user, array $files, array $signers return $carry; }, ''), 'description' => $signer->getDescription(), - 'displayName' => - array_reduce($identifyMethodsOfSigner, function (string $carry, IdentifyMethod $identifyMethod): string { + 'displayName' + => array_reduce($identifyMethodsOfSigner, function (string $carry, IdentifyMethod $identifyMethod): string { if (!$carry && $identifyMethod->getMandatory()) { return $identifyMethod->getIdentifierValue(); } diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index 0b27a528e4..8989220387 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -312,8 +312,8 @@ private function loadSavedSettings(): void { }, []); $enabled = false; foreach ($this->availableSignatureMethods as $signatureMethodName) { - $this->signatureMethods[$signatureMethodName] = - $this->getEmptyInstanceOfSignatureMethodByName($signatureMethodName); + $this->signatureMethods[$signatureMethodName] + = $this->getEmptyInstanceOfSignatureMethodByName($signatureMethodName); if (isset($this->settings['signatureMethods'][$signatureMethodName]['enabled']) && $this->settings['signatureMethods'][$signatureMethodName]['enabled'] ) { diff --git a/lib/Service/Install/InstallService.php b/lib/Service/Install/InstallService.php index 95e2ae1aa0..07bcfe87a7 100644 --- a/lib/Service/Install/InstallService.php +++ b/lib/Service/Install/InstallService.php @@ -119,9 +119,9 @@ private function getFolder(string $path = '', ?ISimpleFolder $folder = null, $ne } catch (NotPermittedException $e) { $user = posix_getpwuid(posix_getuid()); throw new LibresignException( - $e->getMessage() . '. ' . - 'Permission problems. ' . - 'Maybe this could fix: chown -R ' . $user['name'] . ' ' . $this->getInternalPathOfFolder($folder) + $e->getMessage() . '. ' + . 'Permission problems. ' + . 'Maybe this could fix: chown -R ' . $user['name'] . ' ' . $this->getInternalPathOfFolder($folder) ); } } @@ -304,10 +304,10 @@ private function getInstallPid(int $pid = 0): int { } else { $cmd = 'ps -eo pid,command|'; } - $cmd .= 'grep "libresign:install --' . $this->resource . '"|' . - 'grep -v grep|' . - 'grep -v defunct|' . - 'sed -e "s/^[[:space:]]*//"|cut -d" " -f1'; + $cmd .= 'grep "libresign:install --' . $this->resource . '"|' + . 'grep -v grep|' + . 'grep -v defunct|' + . 'sed -e "s/^[[:space:]]*//"|cut -d" " -f1'; $output = shell_exec($cmd); if (!is_string($output)) { return 0; diff --git a/lib/Service/SignatureTextService.php b/lib/Service/SignatureTextService.php index 6a51fdbfb8..ed828e222d 100644 --- a/lib/Service/SignatureTextService.php +++ b/lib/Service/SignatureTextService.php @@ -274,17 +274,17 @@ private function splitAndGetLongestHalfLength(string $text): int { $index = $middle; while ( - $index >= 0 && - $index < $length && - mb_substr($text, $index, 1) !== ' ' + $index >= 0 + && $index < $length + && mb_substr($text, $index, 1) !== ' ' ) { $index += $direction; } if ( - $index > 0 && - $index < $length && - mb_substr($text, $index, 1) === ' ' + $index > 0 + && $index < $length + && mb_substr($text, $index, 1) === ' ' ) { $first = mb_substr($text, 0, $index); $second = mb_substr($text, $index + 1); diff --git a/tests/php/Unit/Helper/ValidateHelperTest.php b/tests/php/Unit/Helper/ValidateHelperTest.php index dbb57a5688..ff8864221d 100644 --- a/tests/php/Unit/Helper/ValidateHelperTest.php +++ b/tests/php/Unit/Helper/ValidateHelperTest.php @@ -558,8 +558,8 @@ public function testValidateExistingFile($dataFile, $uuid, $exception):void { if (!empty($uuid)) { $libresignFile->method('__call') - ->willReturnCallback(fn ($method) => - match ($method) { + ->willReturnCallback(fn ($method) + => match ($method) { 'getNodeId' => 1, } ); diff --git a/tests/php/Unit/Service/AccountServiceTest.php b/tests/php/Unit/Service/AccountServiceTest.php index 18f3f69584..63af3b14a1 100644 --- a/tests/php/Unit/Service/AccountServiceTest.php +++ b/tests/php/Unit/Service/AccountServiceTest.php @@ -243,8 +243,8 @@ function ($self):array { $signRequest = $this->createMock(SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getEmail' => 'valid@test.coop', 'getFileId' => 171, 'getUserId' => 'username', @@ -341,8 +341,8 @@ public function testCreateToSignWithErrorInSendingEmail():void { $signRequest = $this->createMock(\OCA\Libresign\Db\SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getDisplayName' => 'John Doe', 'getId' => 1, } diff --git a/tests/php/Unit/Service/MailServiceTest.php b/tests/php/Unit/Service/MailServiceTest.php index 9c9d59eb4f..0a711c2007 100644 --- a/tests/php/Unit/Service/MailServiceTest.php +++ b/tests/php/Unit/Service/MailServiceTest.php @@ -57,8 +57,8 @@ public function testSuccessNotifyUnsignedUser():void { $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getUuid' => 'asdfg', 'getFileId' => 1, 'getDisplayName' => 'John Doe' @@ -86,8 +86,8 @@ public function testFailToSendMailToUnsignedUser():void { $signRequest = $this->createMock(SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getUuid' => 'asdfg', 'getFileId' => 1, 'getDisplayName' => 'John doe', diff --git a/tests/php/Unit/Service/SignFileServiceTest.php b/tests/php/Unit/Service/SignFileServiceTest.php index 12188b0e09..d9191ac60b 100644 --- a/tests/php/Unit/Service/SignFileServiceTest.php +++ b/tests/php/Unit/Service/SignFileServiceTest.php @@ -180,8 +180,8 @@ public function testCanDeleteRequestSignatureWhenDocumentAlreadySigned():void { $signRequest = $this->createMock(\OCA\Libresign\Db\SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getSigned' => '2021-01-01 01:01:01', } ); @@ -197,8 +197,8 @@ public function testCanDeleteRequestSignatureWhenNoSignatureWasRequested():void $signRequest = $this->createMock(\OCA\Libresign\Db\SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getSigned' => null, 'getId' => 171, } @@ -348,8 +348,8 @@ public static function providerStoreUserMetadata(): array { private function createSignRequestMock(array $methods): MockObject { $signRequest = $this->createMock(SignRequest::class); - $signRequest->method('__call')->willReturnCallback(fn (string $method) => - $methods[$method] ?? null + $signRequest->method('__call')->willReturnCallback(fn (string $method) + => $methods[$method] ?? null ); return $signRequest; } @@ -422,8 +422,8 @@ public function testGetSignatureParamsSignerEmail( $signRequest = $this->createMock(SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getId' => 171, 'getMetadata' => [], } @@ -572,8 +572,8 @@ public function testGetSignatureParamsMetadata( $signRequest = $this->createMock(SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getId' => 171, 'getMetadata' => $metadata, } @@ -639,8 +639,8 @@ public function testSetVisibleElements( $signRequest = $this->createMock(SignRequest::class); $signRequest ->method('__call') - ->willReturnCallback(fn (string $method) => - match ($method) { + ->willReturnCallback(fn (string $method) + => match ($method) { 'getFileId' => 171, 'getId' => 171, } diff --git a/tests/php/Unit/Service/SignatureBackgroundServiceTest.php b/tests/php/Unit/Service/SignatureBackgroundServiceTest.php index 60f5cfa6d2..a30af60e6e 100644 --- a/tests/php/Unit/Service/SignatureBackgroundServiceTest.php +++ b/tests/php/Unit/Service/SignatureBackgroundServiceTest.php @@ -60,16 +60,16 @@ public function testScaleDimensions( public static function providerScaleDimensions(): array { return [ - 'under limit => return equals' => - [100, 50, 200, 100, 100, 50], - 'between upscale limit => return equals' => - [500, 200, 200, 100, 500, 200], - 'height over upscale limit => reduce to scale limit' => - [800, 600, 200, 100, 400, 300], - 'width and height over upscale limit => reduce to scale limit' => - [2000, 1600, 200, 100, 375, 300], - 'every return integer' => - [2000, 1600, 200.7, 100.5, 376, 301], + 'under limit => return equals' + => [100, 50, 200, 100, 100, 50], + 'between upscale limit => return equals' + => [500, 200, 200, 100, 500, 200], + 'height over upscale limit => reduce to scale limit' + => [800, 600, 200, 100, 400, 300], + 'width and height over upscale limit => reduce to scale limit' + => [2000, 1600, 200, 100, 375, 300], + 'every return integer' + => [2000, 1600, 200.7, 100.5, 376, 301], ]; } } From 2dd456bf3990c4cd10ea1712265894dae7e2ab4e Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 20 Jun 2025 02:31:29 +0000 Subject: [PATCH 0010/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/de.js | 6 +++--- l10n/de.json | 6 +++--- l10n/et_EE.js | 34 ++++++++++++++++++++++++++-------- l10n/et_EE.json | 34 ++++++++++++++++++++++++++-------- l10n/it.js | 1 + l10n/it.json | 1 + l10n/sw.js | 8 ++++++++ l10n/sw.json | 8 ++++++++ l10n/uk.js | 1 + l10n/uk.json | 1 + l10n/zh_CN.js | 1 + l10n/zh_CN.json | 1 + 12 files changed, 80 insertions(+), 22 deletions(-) diff --git a/l10n/de.js b/l10n/de.js index abc1608ef7..7a7052122e 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -149,7 +149,7 @@ OC.L10N.register( "File to sign" : "Datei zum Signieren", "Changes have been made in a file that you have to sign. Access the link below:" : "Es wurden Änderungen in einer Datei vorgenommen, die du unterschreiben musst. Öffne den Link unten:", "Sign »%s«" : "Signiere »%s«", - "LibreSign: There is a file for you to sign" : "LibreSign: Es gibt eine Datei, die du signieren kannst", + "LibreSign: There is a file for you to sign" : "LibreSign: Eine Datei zum Signieren vorhanden", "There is a document for you to sign. Access the link below:" : "Dokument zum Signieren vorhanden. Nutze den folgenden Link:", "LibreSign: A file has been signed" : "LibreSign: Eine Datei wurde signiert", "%s signed the document. You can access it using the link below:" : "%s hat das Dokument signiert. Du kannst es über den unten stehenden Link aufrufen:", @@ -288,7 +288,7 @@ OC.L10N.register( "Remove filter" : "Filter entfernen", "Switch to list view" : "Zur Listenansicht wechseln", "Switch to grid view" : "Zur Rasteransicht wechseln", - "There are no documents" : "Es gibt keine Dokumente", + "There are no documents" : "Keine Dokumente vorhanden", "Choose the file to request signatures." : "Datei auswählen, für die eine Signatur angefordert werden soll", "1 file" : "1 Datei", "{fileCount} files" : "{fileCount} Dateien", @@ -427,7 +427,7 @@ OC.L10N.register( "This document is valid" : "Dieses Dokument ist gültig", "Validate signature" : "Signatur überprüfen", "From UUID" : "Von UUID", - "Enter the ID or UUID of the document to validate." : "Gib die ID oder UUID des zu überprüfenden Dokuments ein.", + "Enter the ID or UUID of the document to validate." : "ID oder UUID des zu überprüfenden Dokuments eingeben.", "Validation" : "Überprüfung", "Document informations" : "Dokument-Informationen", "Congratulations you have digitally signed a document using LibreSign" : "Herzlichen Glückwunsch, du hast ein Dokument mit LibreSign digital signiert", diff --git a/l10n/de.json b/l10n/de.json index b9d308aada..be81040840 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -147,7 +147,7 @@ "File to sign" : "Datei zum Signieren", "Changes have been made in a file that you have to sign. Access the link below:" : "Es wurden Änderungen in einer Datei vorgenommen, die du unterschreiben musst. Öffne den Link unten:", "Sign »%s«" : "Signiere »%s«", - "LibreSign: There is a file for you to sign" : "LibreSign: Es gibt eine Datei, die du signieren kannst", + "LibreSign: There is a file for you to sign" : "LibreSign: Eine Datei zum Signieren vorhanden", "There is a document for you to sign. Access the link below:" : "Dokument zum Signieren vorhanden. Nutze den folgenden Link:", "LibreSign: A file has been signed" : "LibreSign: Eine Datei wurde signiert", "%s signed the document. You can access it using the link below:" : "%s hat das Dokument signiert. Du kannst es über den unten stehenden Link aufrufen:", @@ -286,7 +286,7 @@ "Remove filter" : "Filter entfernen", "Switch to list view" : "Zur Listenansicht wechseln", "Switch to grid view" : "Zur Rasteransicht wechseln", - "There are no documents" : "Es gibt keine Dokumente", + "There are no documents" : "Keine Dokumente vorhanden", "Choose the file to request signatures." : "Datei auswählen, für die eine Signatur angefordert werden soll", "1 file" : "1 Datei", "{fileCount} files" : "{fileCount} Dateien", @@ -425,7 +425,7 @@ "This document is valid" : "Dieses Dokument ist gültig", "Validate signature" : "Signatur überprüfen", "From UUID" : "Von UUID", - "Enter the ID or UUID of the document to validate." : "Gib die ID oder UUID des zu überprüfenden Dokuments ein.", + "Enter the ID or UUID of the document to validate." : "ID oder UUID des zu überprüfenden Dokuments eingeben.", "Validation" : "Überprüfung", "Document informations" : "Dokument-Informationen", "Congratulations you have digitally signed a document using LibreSign" : "Herzlichen Glückwunsch, du hast ein Dokument mit LibreSign digital signiert", diff --git a/l10n/et_EE.js b/l10n/et_EE.js index 5ebdc490c2..9c3933fd57 100644 --- a/l10n/et_EE.js +++ b/l10n/et_EE.js @@ -7,6 +7,7 @@ OC.L10N.register( "Success" : "Valmis", "Invalid user or password" : "Vigane kasutajanimi või salasõna", "Settings saved" : "Seaded salvestatud", + "New password to sign documents has been created" : "Uus allkirjastamise salasõna on loodud.", "The file was uploaded" : "Fail laaditi üles", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaaditud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaaditud fail on suurem, kui MAX_FILE_SIZE atribuut, mis oli HTML vormis määratud", @@ -20,6 +21,7 @@ OC.L10N.register( "partially signed" : "osaliselt allkirjastatud", "deleted" : "kustutatud", "Digitally signed by LibreSign." : "Allkirjastatud digitaalselt LibreSign'i abil.", + "Password to sign not defined. Create a password to sign." : "Allkirjastamise salasõna on puudu. Jätkamiseks palun lisa salasõna.", "Invalid password" : "Vale salasõna", "User not found." : "Kasutajat ei leidu.", "File is too big" : "Fail on liiga suur", @@ -35,6 +37,7 @@ OC.L10N.register( "Dismiss notification" : "Sulge teavitus", "Password is mandatory" : "Salasõna on kohustuslik", "File not found" : "Faili ei leitud", + "Password to sign is mandatory" : "Salasõna on allkirjastamisel kohustuslik", "File already exists" : "Fail on juba olemas", "Visible element file must be png." : "Nähtav element peab olema png.", "Empty file" : "Tühi fail", @@ -122,17 +125,25 @@ OC.L10N.register( "Status" : "Staatus", "Actions" : "Tegevused", "Delete certificate" : "Kustuta sertifikaat", - "Change password" : "Muuda Salasõna", + "Change password" : "Muuda salasõna", "Signature" : "Allkiri", "No signature, click here to create a new one" : "Allkirja pole, selle lisamiseks klõpsi siin", "No initials, click here to create a new one" : "Initsiaale pole, nende lisamiseks klõpsi siin", "Profile picture" : "Profiili pilt", + "This is not a valid email" : "See pole korrektne e-posti aadress", + "The email entered is not the same as the email in the invitation" : "Sisestatud e-posti aadress ei vasta kutses olnud aadressile", + "Your password must be greater than 4 digits" : "Sinu salasõnas peab olema vähemalt 4 numbrit", + "Passwords does not match" : "Salasõnad ei klapi", "Create account" : "Loo konto", - "Password" : "Parool", + "Password" : "Salasõna", "Confirm password" : "Kinnita salasõna", - "Enter a password" : "Enter a password", + "Error creating new password, please contact the administrator" : "Viga salasõna loomisel, palun küsi abi peakasutajalt", + "Password Creation" : "Salasõna loomine", + "For security reasons, you must create a password to sign the documents. Enter your new password in the field below." : "Turvakaalutlustel pead dokumentide allkirjastamiseks lisama salasõna. Jätkamiseks palun sisesta salasõna järgnevale väljale.", + "Enter a password" : "Sisesta salasõna", "Page not found" : "Lehekülge ei leitud", - "Ok" : "Ok", + "Also delete the file." : "Samuti kustuta fail.", + "Ok" : "Sobib", "Toggle selection for file \"{displayName}\"" : "Lülita „{displayName}“ valimine sisse/välja", "File is loading" : "Fail on laadimisel", "Clear filter" : "Tühjenda filter", @@ -146,6 +157,8 @@ OC.L10N.register( "Remove filter" : "Eemalda filter", "Switch to list view" : "Kasuta loendivaadet", "Switch to grid view" : "Kasuta ruudustikuvaadet", + "There are no documents" : "Dokumente pole", + "Choose the file to request signatures." : "Vali allkirjastatav fail.", "1 file" : "1 fail", "{fileCount} files" : "{fileCount} faili", "Total rows summary" : "Ridade koondkokkuvõte", @@ -154,9 +167,11 @@ OC.L10N.register( "\"{displayName}\" action failed" : "Tegevus ei õnnestunud: „{displayName}“", "(selected)" : "(valitud)", "_{count} selected_::_{count} selected_" : ["{count} valitud","{count} valitud"], - "Password reset" : "Parooli taastamine ", - "Current password" : "Praegune parool", - "New password" : "Uus parool", + "Certificate password" : "Sertifikaadi salasõna", + "Password reset" : "Salasõna taastamine", + "Enter new password and then repeat it" : "Sisesta uus salasõna ja korda seda", + "Current password" : "Praegune salasõna", + "New password" : "Uus salasõna", "Repeat password" : "Korda salasõna", "Remove" : "Eemalda", "Message" : "Sõnum", @@ -167,7 +182,10 @@ OC.L10N.register( "No" : "Ei", "Description only" : "Vaid kirjeldus", "Reset to default" : "Taasta vaikeseadistused", - "Forgot password?" : "Unustasid parooli?", + "Please define your sign password" : "Allkirjastamiseks palun loo oma salasõna.", + "Define a password and sign the document." : "Lisa salasõna ja kirjuta dokumendile alla.", + "Subscription password." : "Tellimuse salasõna.", + "Forgot password?" : "Unustasid salasõna?", "Name:" : "Nimi:", "Status:" : "Seisund:", "No date" : "No date" diff --git a/l10n/et_EE.json b/l10n/et_EE.json index b42cd7e51e..e172c01aba 100644 --- a/l10n/et_EE.json +++ b/l10n/et_EE.json @@ -5,6 +5,7 @@ "Success" : "Valmis", "Invalid user or password" : "Vigane kasutajanimi või salasõna", "Settings saved" : "Seaded salvestatud", + "New password to sign documents has been created" : "Uus allkirjastamise salasõna on loodud.", "The file was uploaded" : "Fail laaditi üles", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaaditud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaaditud fail on suurem, kui MAX_FILE_SIZE atribuut, mis oli HTML vormis määratud", @@ -18,6 +19,7 @@ "partially signed" : "osaliselt allkirjastatud", "deleted" : "kustutatud", "Digitally signed by LibreSign." : "Allkirjastatud digitaalselt LibreSign'i abil.", + "Password to sign not defined. Create a password to sign." : "Allkirjastamise salasõna on puudu. Jätkamiseks palun lisa salasõna.", "Invalid password" : "Vale salasõna", "User not found." : "Kasutajat ei leidu.", "File is too big" : "Fail on liiga suur", @@ -33,6 +35,7 @@ "Dismiss notification" : "Sulge teavitus", "Password is mandatory" : "Salasõna on kohustuslik", "File not found" : "Faili ei leitud", + "Password to sign is mandatory" : "Salasõna on allkirjastamisel kohustuslik", "File already exists" : "Fail on juba olemas", "Visible element file must be png." : "Nähtav element peab olema png.", "Empty file" : "Tühi fail", @@ -120,17 +123,25 @@ "Status" : "Staatus", "Actions" : "Tegevused", "Delete certificate" : "Kustuta sertifikaat", - "Change password" : "Muuda Salasõna", + "Change password" : "Muuda salasõna", "Signature" : "Allkiri", "No signature, click here to create a new one" : "Allkirja pole, selle lisamiseks klõpsi siin", "No initials, click here to create a new one" : "Initsiaale pole, nende lisamiseks klõpsi siin", "Profile picture" : "Profiili pilt", + "This is not a valid email" : "See pole korrektne e-posti aadress", + "The email entered is not the same as the email in the invitation" : "Sisestatud e-posti aadress ei vasta kutses olnud aadressile", + "Your password must be greater than 4 digits" : "Sinu salasõnas peab olema vähemalt 4 numbrit", + "Passwords does not match" : "Salasõnad ei klapi", "Create account" : "Loo konto", - "Password" : "Parool", + "Password" : "Salasõna", "Confirm password" : "Kinnita salasõna", - "Enter a password" : "Enter a password", + "Error creating new password, please contact the administrator" : "Viga salasõna loomisel, palun küsi abi peakasutajalt", + "Password Creation" : "Salasõna loomine", + "For security reasons, you must create a password to sign the documents. Enter your new password in the field below." : "Turvakaalutlustel pead dokumentide allkirjastamiseks lisama salasõna. Jätkamiseks palun sisesta salasõna järgnevale väljale.", + "Enter a password" : "Sisesta salasõna", "Page not found" : "Lehekülge ei leitud", - "Ok" : "Ok", + "Also delete the file." : "Samuti kustuta fail.", + "Ok" : "Sobib", "Toggle selection for file \"{displayName}\"" : "Lülita „{displayName}“ valimine sisse/välja", "File is loading" : "Fail on laadimisel", "Clear filter" : "Tühjenda filter", @@ -144,6 +155,8 @@ "Remove filter" : "Eemalda filter", "Switch to list view" : "Kasuta loendivaadet", "Switch to grid view" : "Kasuta ruudustikuvaadet", + "There are no documents" : "Dokumente pole", + "Choose the file to request signatures." : "Vali allkirjastatav fail.", "1 file" : "1 fail", "{fileCount} files" : "{fileCount} faili", "Total rows summary" : "Ridade koondkokkuvõte", @@ -152,9 +165,11 @@ "\"{displayName}\" action failed" : "Tegevus ei õnnestunud: „{displayName}“", "(selected)" : "(valitud)", "_{count} selected_::_{count} selected_" : ["{count} valitud","{count} valitud"], - "Password reset" : "Parooli taastamine ", - "Current password" : "Praegune parool", - "New password" : "Uus parool", + "Certificate password" : "Sertifikaadi salasõna", + "Password reset" : "Salasõna taastamine", + "Enter new password and then repeat it" : "Sisesta uus salasõna ja korda seda", + "Current password" : "Praegune salasõna", + "New password" : "Uus salasõna", "Repeat password" : "Korda salasõna", "Remove" : "Eemalda", "Message" : "Sõnum", @@ -165,7 +180,10 @@ "No" : "Ei", "Description only" : "Vaid kirjeldus", "Reset to default" : "Taasta vaikeseadistused", - "Forgot password?" : "Unustasid parooli?", + "Please define your sign password" : "Allkirjastamiseks palun loo oma salasõna.", + "Define a password and sign the document." : "Lisa salasõna ja kirjuta dokumendile alla.", + "Subscription password." : "Tellimuse salasõna.", + "Forgot password?" : "Unustasid salasõna?", "Name:" : "Nimi:", "Status:" : "Seisund:", "No date" : "No date" diff --git a/l10n/it.js b/l10n/it.js index f1ffb77cdf..a8918e31b5 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Firma", "Confirm" : "Conferma", "Request signatures?" : "Richiedi firme?", + "Edit visible signatures" : "Modifica le firme visibili", "Add signer" : "Aggiungi firmatario", "Send reminder" : "Invia promemoria", "Enter who will receive the request" : "Inserisci chi riceverà la richiesta", diff --git a/l10n/it.json b/l10n/it.json index a35f85b8c3..232f74af84 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -224,6 +224,7 @@ "Sign" : "Firma", "Confirm" : "Conferma", "Request signatures?" : "Richiedi firme?", + "Edit visible signatures" : "Modifica le firme visibili", "Add signer" : "Aggiungi firmatario", "Send reminder" : "Invia promemoria", "Enter who will receive the request" : "Inserisci chi riceverà la richiesta", diff --git a/l10n/sw.js b/l10n/sw.js index 67ad7e033a..6017baa2a7 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -9,9 +9,11 @@ OC.L10N.register( "Missing a temporary folder" : "Imekosa faili la muda", "Could not write file to disk" : "Haikuweza kuandika faili kwenye disk", "A PHP extension stopped the file upload" : "Uongezaji wa PHP umesimamisha upakiaji wa faili", + "File is too big" : "Faili ni kubwa mno", "View" : "Angalia", "File not found" : "Faili halipatikani", "File already exists" : "Faili lipo tayari", + "Invalid file provided" : "Faili iliyotolewa si halali", "Email" : "Barua pepe", "Text" : "Maandishi", "Delete" : "Futa", @@ -20,13 +22,17 @@ OC.L10N.register( "Files" : "Mafaili", "Settings" : "Mipangilio", "Name" : "Jina", + "Searching …" : "Inatafuta", "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", "Update" : "Sasisha", + "Choose" : "Chagua", "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", "Status" : "Wadhifa", "Actions" : "Utendekaji", + "Password" : "Nenosiri", + "Page not found" : "Ukurasa haupatikani", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", "Clear filter" : "Futa kichujio", @@ -40,10 +46,12 @@ OC.L10N.register( "Remove filter" : "Ondoa kichujio", "Switch to list view" : "Switch to list view", "Switch to grid view" : "Switch to grid view", + "{fileCount} files" : "{fileCount} files", "Total rows summary" : "Muhtasari wa jumla ya safu mlalo", "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" kitendo cha kundi kimetekelezwa kwa mafanikio", "\"{displayName}\" action failed" : "\"{displayName}\" matendo yameshindwa", "(selected)" : "(iliyochaguliwa)", + "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], "Yes" : "Ndiyo", "No" : "Hapana" }, diff --git a/l10n/sw.json b/l10n/sw.json index 63b385a14f..d51919214c 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -7,9 +7,11 @@ "Missing a temporary folder" : "Imekosa faili la muda", "Could not write file to disk" : "Haikuweza kuandika faili kwenye disk", "A PHP extension stopped the file upload" : "Uongezaji wa PHP umesimamisha upakiaji wa faili", + "File is too big" : "Faili ni kubwa mno", "View" : "Angalia", "File not found" : "Faili halipatikani", "File already exists" : "Faili lipo tayari", + "Invalid file provided" : "Faili iliyotolewa si halali", "Email" : "Barua pepe", "Text" : "Maandishi", "Delete" : "Futa", @@ -18,13 +20,17 @@ "Files" : "Mafaili", "Settings" : "Mipangilio", "Name" : "Jina", + "Searching …" : "Inatafuta", "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", "Update" : "Sasisha", + "Choose" : "Chagua", "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", "Status" : "Wadhifa", "Actions" : "Utendekaji", + "Password" : "Nenosiri", + "Page not found" : "Ukurasa haupatikani", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", "Clear filter" : "Futa kichujio", @@ -38,10 +44,12 @@ "Remove filter" : "Ondoa kichujio", "Switch to list view" : "Switch to list view", "Switch to grid view" : "Switch to grid view", + "{fileCount} files" : "{fileCount} files", "Total rows summary" : "Muhtasari wa jumla ya safu mlalo", "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" kitendo cha kundi kimetekelezwa kwa mafanikio", "\"{displayName}\" action failed" : "\"{displayName}\" matendo yameshindwa", "(selected)" : "(iliyochaguliwa)", + "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], "Yes" : "Ndiyo", "No" : "Hapana" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/l10n/uk.js b/l10n/uk.js index d7aef2daac..f724373c16 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -84,6 +84,7 @@ OC.L10N.register( "\"{displayName}\" batch action executed successfully" : "Операцію \"{displayName}\" успішно виконано", "\"{displayName}\" action failed" : "Не вдалося виконати \"{displayName}\"", "(selected)" : "(вибрано)", + "_{count} selected_::_{count} selected_" : ["Вибрано {count}","Вибрано {count}","Вибрано {count} ","Вибрано {count} "], "Password reset" : "Відновлення пароля", "Current password" : "Поточний пароль", "New password" : "Новий пароль", diff --git a/l10n/uk.json b/l10n/uk.json index 5af3865f26..9987d88b75 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -82,6 +82,7 @@ "\"{displayName}\" batch action executed successfully" : "Операцію \"{displayName}\" успішно виконано", "\"{displayName}\" action failed" : "Не вдалося виконати \"{displayName}\"", "(selected)" : "(вибрано)", + "_{count} selected_::_{count} selected_" : ["Вибрано {count}","Вибрано {count}","Вибрано {count} ","Вибрано {count} "], "Password reset" : "Відновлення пароля", "Current password" : "Поточний пароль", "New password" : "Новий пароль", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index ff395db1fc..b28fe33b04 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -198,6 +198,7 @@ OC.L10N.register( "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", "\"{displayName}\" action failed" : "“{displayName}”操作执行失败", "(selected)" : "(选中)", + "_{count} selected_::_{count} selected_" : ["已选择 {count} 个"], "Request Signatures" : "请求签名", "Password reset" : "密码重置", "Enter new password and then repeat it" : "输入新密码并重复一次", diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 9df072facc..b632aad9a2 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -196,6 +196,7 @@ "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", "\"{displayName}\" action failed" : "“{displayName}”操作执行失败", "(selected)" : "(选中)", + "_{count} selected_::_{count} selected_" : ["已选择 {count} 个"], "Request Signatures" : "请求签名", "Password reset" : "密码重置", "Enter new password and then repeat it" : "输入新密码并重复一次", From 78fa2e38863f27661ddfc597222a951decfcc22c Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 21 Jun 2025 02:33:45 +0000 Subject: [PATCH 0011/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/cs.js | 2 +- l10n/cs.json | 2 +- l10n/en_GB.js | 1 + l10n/en_GB.json | 1 + l10n/ga.js | 1 + l10n/ga.json | 1 + l10n/ja.js | 1 + l10n/ja.json | 1 + l10n/sw.js | 6 +++++- l10n/sw.json | 6 +++++- l10n/zh_HK.js | 1 + l10n/zh_HK.json | 1 + 12 files changed, 20 insertions(+), 4 deletions(-) diff --git a/l10n/cs.js b/l10n/cs.js index 65cc64fb2b..f2a73d3d7d 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -295,7 +295,7 @@ OC.L10N.register( "Created at" : "Vytvořeno", "Toggle selection for all files" : "Vybrat / zrušit výběr všech souborů", "\"{displayName}\" failed on some elements " : "„{displayName}“ se pro některé prvky nezdařilo", - "\"{displayName}\" batch action executed successfully" : "hromadná akce „{displayName}“ úspěšně vykonána", + "\"{displayName}\" batch action executed successfully" : "Hromadná akce „{displayName}“ úspěšně vykonána", "\"{displayName}\" action failed" : "akce „{displayName}“ se nezdařila", "(selected)" : "(vybráno)", "_{count} selected_::_{count} selected_" : ["vybráno {count}","vybráno {count}","vybráno {count}","vybráno {count}"], diff --git a/l10n/cs.json b/l10n/cs.json index d9370d5c95..31d573f673 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -293,7 +293,7 @@ "Created at" : "Vytvořeno", "Toggle selection for all files" : "Vybrat / zrušit výběr všech souborů", "\"{displayName}\" failed on some elements " : "„{displayName}“ se pro některé prvky nezdařilo", - "\"{displayName}\" batch action executed successfully" : "hromadná akce „{displayName}“ úspěšně vykonána", + "\"{displayName}\" batch action executed successfully" : "Hromadná akce „{displayName}“ úspěšně vykonána", "\"{displayName}\" action failed" : "akce „{displayName}“ se nezdařila", "(selected)" : "(vybráno)", "_{count} selected_::_{count} selected_" : ["vybráno {count}","vybráno {count}","vybráno {count}","vybráno {count}"], diff --git a/l10n/en_GB.js b/l10n/en_GB.js index ce8839b229..22f1933436 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Sign", "Confirm" : "Confirm", "Request signatures?" : "Request signatures?", + "Edit visible signatures" : "Edit visible signatures", "Add signer" : "Add signer", "Send reminder" : "Send reminder", "Enter who will receive the request" : "Enter who will receive the request", diff --git a/l10n/en_GB.json b/l10n/en_GB.json index 7ea7259650..e99eb70d5f 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -224,6 +224,7 @@ "Sign" : "Sign", "Confirm" : "Confirm", "Request signatures?" : "Request signatures?", + "Edit visible signatures" : "Edit visible signatures", "Add signer" : "Add signer", "Send reminder" : "Send reminder", "Enter who will receive the request" : "Enter who will receive the request", diff --git a/l10n/ga.js b/l10n/ga.js index efe9dde73e..e9a2ed136f 100644 --- a/l10n/ga.js +++ b/l10n/ga.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Comhartha", "Confirm" : "Deimhnigh", "Request signatures?" : "Iarr sínithe?", + "Edit visible signatures" : "Cuir sínithe infheicthe in eagar", "Add signer" : "Cuir sínitheoir leis", "Send reminder" : "Seol meabhrúchán", "Enter who will receive the request" : "Cuir isteach cé a gheobhaidh an t-iarratas", diff --git a/l10n/ga.json b/l10n/ga.json index cf3839e1a2..79171b2a65 100644 --- a/l10n/ga.json +++ b/l10n/ga.json @@ -224,6 +224,7 @@ "Sign" : "Comhartha", "Confirm" : "Deimhnigh", "Request signatures?" : "Iarr sínithe?", + "Edit visible signatures" : "Cuir sínithe infheicthe in eagar", "Add signer" : "Cuir sínitheoir leis", "Send reminder" : "Seol meabhrúchán", "Enter who will receive the request" : "Cuir isteach cé a gheobhaidh an t-iarratas", diff --git a/l10n/ja.js b/l10n/ja.js index 3f91a1ba6e..b3a6b444a3 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -94,6 +94,7 @@ OC.L10N.register( "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。", "\"{displayName}\" action failed" : "\"{displayName}\" アクションは失敗しました", "(selected)" : "(選択済み)", + "_{count} selected_::_{count} selected_" : ["{count}選択されています"], "Password reset" : "パスワードのリセット", "Current password" : "現在のパスワード", "New password" : "新たなパスワード", diff --git a/l10n/ja.json b/l10n/ja.json index 2741ecbe15..351185edd2 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -92,6 +92,7 @@ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。", "\"{displayName}\" action failed" : "\"{displayName}\" アクションは失敗しました", "(selected)" : "(選択済み)", + "_{count} selected_::_{count} selected_" : ["{count}選択されています"], "Password reset" : "パスワードのリセット", "Current password" : "現在のパスワード", "New password" : "新たなパスワード", diff --git a/l10n/sw.js b/l10n/sw.js index 6017baa2a7..1e4b05b21b 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -26,6 +26,7 @@ OC.L10N.register( "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", "Update" : "Sasisha", "Choose" : "Chagua", + "Previous" : "Iliyopita", "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", @@ -52,7 +53,10 @@ OC.L10N.register( "\"{displayName}\" action failed" : "\"{displayName}\" matendo yameshindwa", "(selected)" : "(iliyochaguliwa)", "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], + "Password reset" : "Uwekaji mpya wa nenosiri", + "New password" : "Nenosiri jipya", "Yes" : "Ndiyo", - "No" : "Hapana" + "No" : "Hapana", + "Forgot password?" : "Umesahau nenosiri" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/sw.json b/l10n/sw.json index d51919214c..cab2128a34 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -24,6 +24,7 @@ "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", "Update" : "Sasisha", "Choose" : "Chagua", + "Previous" : "Iliyopita", "Confirm" : "Thibitisha", "Details" : "Maelezo ya kina", "Type" : "Aina", @@ -50,7 +51,10 @@ "\"{displayName}\" action failed" : "\"{displayName}\" matendo yameshindwa", "(selected)" : "(iliyochaguliwa)", "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], + "Password reset" : "Uwekaji mpya wa nenosiri", + "New password" : "Nenosiri jipya", "Yes" : "Ndiyo", - "No" : "Hapana" + "No" : "Hapana", + "Forgot password?" : "Umesahau nenosiri" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js index 0926dd5274..43d859ae78 100644 --- a/l10n/zh_HK.js +++ b/l10n/zh_HK.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "簽署", "Confirm" : "確認", "Request signatures?" : "請求簽名?", + "Edit visible signatures" : "編輯可見的簽名", "Add signer" : "添加簽署人", "Send reminder" : "傳送提醒", "Enter who will receive the request" : "輸入誰會收到請求", diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json index 93ecca4eb7..bc9fee0ca2 100644 --- a/l10n/zh_HK.json +++ b/l10n/zh_HK.json @@ -224,6 +224,7 @@ "Sign" : "簽署", "Confirm" : "確認", "Request signatures?" : "請求簽名?", + "Edit visible signatures" : "編輯可見的簽名", "Add signer" : "添加簽署人", "Send reminder" : "傳送提醒", "Enter who will receive the request" : "輸入誰會收到請求", From fd3fb502de490816102730f1b95ec0f57feeb93c Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 22 Jun 2025 02:33:26 +0000 Subject: [PATCH 0012/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/fr.js | 1 + l10n/fr.json | 1 + l10n/sw.js | 2 ++ l10n/sw.json | 2 ++ 4 files changed, 6 insertions(+) diff --git a/l10n/fr.js b/l10n/fr.js index b1f2ce63ba..269f210598 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -226,6 +226,7 @@ OC.L10N.register( "Sign" : "Signer", "Confirm" : "Confirmer", "Request signatures?" : "Demander une signature ?", + "Edit visible signatures" : "Modifier les signatures visibles", "Add signer" : "Ajouter un signataire", "Send reminder" : "Envoyer un rappel", "Enter who will receive the request" : "Saisissez ceux qui recevront la requête", diff --git a/l10n/fr.json b/l10n/fr.json index 637c1eeeaf..4c9dfd4d98 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -224,6 +224,7 @@ "Sign" : "Signer", "Confirm" : "Confirmer", "Request signatures?" : "Demander une signature ?", + "Edit visible signatures" : "Modifier les signatures visibles", "Add signer" : "Ajouter un signataire", "Send reminder" : "Envoyer un rappel", "Enter who will receive the request" : "Saisissez ceux qui recevront la requête", diff --git a/l10n/sw.js b/l10n/sw.js index 1e4b05b21b..b3928a0db9 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -21,6 +21,7 @@ OC.L10N.register( "Cancel" : "Cancel", "Files" : "Mafaili", "Settings" : "Mipangilio", + "Loading …" : "Inapakia", "Name" : "Jina", "Searching …" : "Inatafuta", "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", @@ -34,6 +35,7 @@ OC.L10N.register( "Actions" : "Utendekaji", "Password" : "Nenosiri", "Page not found" : "Ukurasa haupatikani", + "Ok" : "Sawa", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", "Clear filter" : "Futa kichujio", diff --git a/l10n/sw.json b/l10n/sw.json index cab2128a34..2d9a5cd9a6 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -19,6 +19,7 @@ "Cancel" : "Cancel", "Files" : "Mafaili", "Settings" : "Mipangilio", + "Loading …" : "Inapakia", "Name" : "Jina", "Searching …" : "Inatafuta", "No recommendations. Start typing." : "Hakuna maoni. Anza kuchapisha", @@ -32,6 +33,7 @@ "Actions" : "Utendekaji", "Password" : "Nenosiri", "Page not found" : "Ukurasa haupatikani", + "Ok" : "Sawa", "Toggle selection for file \"{displayName}\"" : "Geuza uteuzi wa faili \"{displayName}\"", "File is loading" : "Faili inapakia", "Clear filter" : "Futa kichujio", From 4ee0e15b3e3e11f64484f7cb50a520a64e523ca1 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 23 Jun 2025 02:31:10 +0000 Subject: [PATCH 0013/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/nl.js | 1 + l10n/nl.json | 1 + l10n/sw.js | 1 + l10n/sw.json | 1 + 4 files changed, 4 insertions(+) diff --git a/l10n/nl.js b/l10n/nl.js index 3732c4d57f..14aad0fbfe 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -205,6 +205,7 @@ OC.L10N.register( "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" batchactie succesvol uitgevoerd", "\"{displayName}\" action failed" : "\"{displayName}\" actie mislukt", "(selected)" : "(geselecteerd)", + "_{count} selected_::_{count} selected_" : ["{count} geselecteerd","{count} geselecteerd"], "Request Signatures" : "Aanvragen ondertekening", "Password reset" : "Wachtwoordherstel", "Enter new password and then repeat it" : "Voer een nieuw wachtwoord in en herhaal het", diff --git a/l10n/nl.json b/l10n/nl.json index 1455d2abed..e8a551405f 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -203,6 +203,7 @@ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" batchactie succesvol uitgevoerd", "\"{displayName}\" action failed" : "\"{displayName}\" actie mislukt", "(selected)" : "(geselecteerd)", + "_{count} selected_::_{count} selected_" : ["{count} geselecteerd","{count} geselecteerd"], "Request Signatures" : "Aanvragen ondertekening", "Password reset" : "Wachtwoordherstel", "Enter new password and then repeat it" : "Voer een nieuw wachtwoord in en herhaal het", diff --git a/l10n/sw.js b/l10n/sw.js index b3928a0db9..80675783f2 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -33,6 +33,7 @@ OC.L10N.register( "Type" : "Aina", "Status" : "Wadhifa", "Actions" : "Utendekaji", + "Signature" : "Saini", "Password" : "Nenosiri", "Page not found" : "Ukurasa haupatikani", "Ok" : "Sawa", diff --git a/l10n/sw.json b/l10n/sw.json index 2d9a5cd9a6..4c7cbe2000 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -31,6 +31,7 @@ "Type" : "Aina", "Status" : "Wadhifa", "Actions" : "Utendekaji", + "Signature" : "Saini", "Password" : "Nenosiri", "Page not found" : "Ukurasa haupatikani", "Ok" : "Sawa", From aef768a8cebfa295dc3c8cca08cfe7cfd97035d5 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Mon, 23 Jun 2025 12:27:18 -0300 Subject: [PATCH 0014/5910] fix: validate file answer The document object came from backend with content every time. If the backend return invalid file content, will have a key inside this array and need to be ignored. Considering that the name is returned every time, I used this to check if is a valid answer or not. Signed-off-by: Vitor Mattos --- src/views/Validation.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Validation.vue b/src/views/Validation.vue index 2d99041e83..722fffc6fe 100644 --- a/src/views/Validation.vue +++ b/src/views/Validation.vue @@ -401,7 +401,7 @@ export default { }, created() { this.$set(this, 'document', loadState('libresign', 'file_info', {})) - this.hasInfo = Object.keys(this.document).length > 0 + this.hasInfo = !!this.document?.name if (this.hasInfo) { this.document.signers.forEach(signer => { this.$set(signer, 'opened', false) From 57c67e110d3d2bbcf261dbff186440cffa9da506 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Mon, 23 Jun 2025 13:45:07 -0300 Subject: [PATCH 0015/5910] fix: ignore vendor bin at transifex sync ```php echo count(array_filter($translatableFiles, fn($v) => strpos($v, "vendor-bin"))); ``` Output: 9320 After this change was found any entry with vendor-bin ```php count(array_filter($translatableFiles, fn($v) => strpos($v, "vendor-bin"))); ``` Output: 0 This could affect the translatable strings that is send do Transifex. Signed-off-by: Vitor Mattos --- .l10nignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.l10nignore b/.l10nignore index c617dc35c1..309643cc38 100644 --- a/.l10nignore +++ b/.l10nignore @@ -9,3 +9,4 @@ js/ node_modules/ tests/ vendor/ +vendor-bin/ From aa4a33338db054d0337df43ae08acf98323f68b1 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Mon, 23 Jun 2025 13:15:04 -0300 Subject: [PATCH 0016/5910] fix: replace heredoc by string concat Reference: https://github.com/nextcloud/docker-ci/issues/790 Signed-off-by: Vitor Mattos --- lib/Controller/SignFileController.php | 15 +++++------ .../IdentifyMethod/AbstractIdentifyMethod.php | 9 +++---- lib/Service/SignatureTextService.php | 26 +++++++++---------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/lib/Controller/SignFileController.php b/lib/Controller/SignFileController.php index 344e77e900..6d8c4aa73a 100644 --- a/lib/Controller/SignFileController.php +++ b/lib/Controller/SignFileController.php @@ -168,14 +168,13 @@ public function sign(string $method, array $elements = [], string $identifyValue $this->logger->error($message, ['exception' => $th]); $data['errors'] = [[ 'message' - => sprintf(<< sprintf( + "The server was unable to complete your request.\n" + . "If this happens again, please send the technical details below to the server administrator.\n" + . "## Technical details:\n" + . "**Remote Address**: %s\n" + . "**Request ID**: %s\n" + . '**Message**: %s', $this->request->getRemoteAddress(), $this->request->getId(), $message, diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index 8989220387..b9aa82c967 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -237,11 +237,10 @@ protected function throwIfRenewalIntervalExpired(): void { 'action' => $this->getRenewAction(), // TRANSLATORS title that is displayed at screen to notify the signer that the link to sign the document expired 'title' => $this->identifyService->getL10n()->t('Link expired'), - 'body' => $this->identifyService->getL10n()->t(<<<'BODY' - The link to sign the document has expired. - We will send a new link to the email %1$s. - Click below to receive the new link and be able to sign the document. - BODY, + 'body' => $this->identifyService->getL10n()->t( + "The link to sign the document has expired.\n" + . 'We will send a new link to the email %1$s.' . "\n" + . 'Click below to receive the new link and be able to sign the document.', [$blur->make()] ), 'uuid' => $signRequest->getUuid(), diff --git a/lib/Service/SignatureTextService.php b/lib/Service/SignatureTextService.php index ed828e222d..ac366a7615 100644 --- a/lib/Service/SignatureTextService.php +++ b/lib/Service/SignatureTextService.php @@ -298,22 +298,20 @@ private function splitAndGetLongestHalfLength(string $text): int { public function getDefaultTemplate(): string { $collectMetadata = $this->appConfig->getValueBool(Application::APP_ID, 'collect_metadata', false); if ($collectMetadata) { - return $this->l10n->t(<< @@ -36,6 +37,7 @@ import ExpirationRules from './ExpirationRules.vue' import IdentificationDocuments from './IdentificationDocuments.vue' import IdentificationFactors from './IdentificationFactors.vue' import LegalInformation from './LegalInformation.vue' +import Reminders from './Reminders.vue' import RootCertificateCfssl from './RootCertificateCfssl.vue' import RootCertificateOpenSsl from './RootCertificateOpenSsl.vue' import SignatureHashAlgorithm from './SignatureHashAlgorithm.vue' @@ -61,6 +63,7 @@ export default { SignatureHashAlgorithm, SignatureStamp, Validation, + Reminders, }, data() { return { From adb624de8a0412964cec7fec5e9dd9f7f054dcaa Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sun, 7 Sep 2025 22:48:41 -0300 Subject: [PATCH 0272/5910] feat: implement reminders at back and frontend Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- appinfo/info.xml | 1 + lib/BackgroundJob/SendReminders.php | 36 +++ lib/Controller/AdminController.php | 38 +++ lib/Db/SignRequestMapper.php | 106 +++++++-- lib/ResponseDefinitions.php | 6 + lib/Service/ReminderService.php | 221 ++++++++++++++++++ openapi-administration.json | 210 +++++++++++++++++ openapi-full.json | 210 +++++++++++++++++ src/types/openapi/openapi-administration.ts | 121 ++++++++++ src/types/openapi/openapi-full.ts | 121 ++++++++++ src/views/Settings/Reminders.vue | 176 +++++++------- .../php/Unit/Service/ReminderServiceTest.php | 200 ++++++++++++++++ 12 files changed, 1341 insertions(+), 105 deletions(-) create mode 100644 lib/BackgroundJob/SendReminders.php create mode 100644 lib/Service/ReminderService.php create mode 100644 tests/php/Unit/Service/ReminderServiceTest.php diff --git a/appinfo/info.xml b/appinfo/info.xml index 4de2ded248..c74fa7692d 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -51,6 +51,7 @@ Developed with ❤️ by [LibreCode](https://librecode.coop). Help us transform OCA\Libresign\BackgroundJob\UserDeleted + OCA\Libresign\BackgroundJob\SendReminders diff --git a/lib/BackgroundJob/SendReminders.php b/lib/BackgroundJob/SendReminders.php new file mode 100644 index 0000000000..bc8cf81a0b --- /dev/null +++ b/lib/BackgroundJob/SendReminders.php @@ -0,0 +1,36 @@ +setInterval(60 * 60 * 24); + $this->setTimeSensitivity(IJob::TIME_SENSITIVE); + } + + /** + * @param array $argument + */ + public function run($argument): void { + $this->reminderService->sendReminders(); + } +} diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php index cc4450d686..61e3042c26 100644 --- a/lib/Controller/AdminController.php +++ b/lib/Controller/AdminController.php @@ -18,6 +18,7 @@ use OCA\Libresign\Service\CertificatePolicyService; use OCA\Libresign\Service\Install\ConfigureCheckService; use OCA\Libresign\Service\Install\InstallService; +use OCA\Libresign\Service\ReminderService; use OCA\Libresign\Service\SignatureBackgroundService; use OCA\Libresign\Service\SignatureTextService; use OCP\AppFramework\Http; @@ -40,6 +41,7 @@ * @psalm-import-type LibresignCetificateDataGenerated from ResponseDefinitions * @psalm-import-type LibresignConfigureCheck from ResponseDefinitions * @psalm-import-type LibresignRootCertificate from ResponseDefinitions + * @psalm-import-type LibresignReminderSettings from ResponseDefinitions */ class AdminController extends AEnvironmentAwareController { private IEventSource $eventSource; @@ -56,6 +58,7 @@ public function __construct( private SignatureBackgroundService $signatureBackgroundService, private CertificatePolicyService $certificatePolicyService, private ValidateService $validateService, + private ReminderService $reminderService, ) { parent::__construct(Application::APP_ID, $request); $this->eventSource = $this->eventSourceFactory->create(); @@ -617,4 +620,39 @@ public function updateOID(string $oid): DataResponse { ); } } + + /** + * Get reminder settings + * + * @return DataResponse + * + * 200: OK + */ + #[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/admin/reminder', requirements: ['apiVersion' => '(v1)'])] + public function reminderFetch(): DataResponse { + $response = $this->reminderService->getSettings(); + return new DataResponse($response); + } + + /** + * Save reminder + * + * @param int $daysBefore First reminder after (days) + * @param int $daysBetween Days between reminders + * @param int $max Max reminders per signer + * @param string $sendTimer Send time (HH:mm) + * @return DataResponse + * + * 200: OK + */ + #[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/admin/reminder', requirements: ['apiVersion' => '(v1)'])] + public function reminderSave( + int $daysBefore = 1, + int $daysBetween = 1, + int $max = 5, + string $sendTimer = '10:00', + ): DataResponse { + $response = $this->reminderService->save($daysBefore, $daysBetween, $max, $sendTimer); + return new DataResponse($response); + } } diff --git a/lib/Db/SignRequestMapper.php b/lib/Db/SignRequestMapper.php index 2ef12adf30..95803e370b 100644 --- a/lib/Db/SignRequestMapper.php +++ b/lib/Db/SignRequestMapper.php @@ -77,12 +77,7 @@ public function incrementNotificationCounter(SignRequest $signRequest, string $m public function update(Entity $entity): SignRequest { /** @var SignRequest */ $signRequest = parent::update($entity); - $filtered = array_filter($this->signers, fn ($e) => $e->getId() === $signRequest->getId()); - if (!empty($filtered)) { - $this->signers[key($filtered)] = $signRequest; - } else { - $this->signers[] = $signRequest; - } + $this->signers[$signRequest->getId()] = $signRequest; return $signRequest; } @@ -106,8 +101,8 @@ public function getByUuid(string $uuid): SignRequest { ); /** @var SignRequest */ $signRequest = $this->findEntity($qb); - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } return $signRequest; } @@ -155,8 +150,8 @@ public function getByFileId(int $fileId): array { /** @var SignRequest[] */ $signers = $this->findEntities($qb); foreach ($signers as $signRequest) { - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } } return $signers; @@ -166,10 +161,8 @@ public function getByFileId(int $fileId): array { * @throws DoesNotExistException */ public function getById(int $signRequestId): SignRequest { - foreach ($this->signers as $signRequest) { - if ($signRequest->getId() === $signRequestId) { - return $signRequest; - } + if (isset($this->signers[$signRequestId])) { + return $this->signers[$signRequestId]; } $qb = $this->db->getQueryBuilder(); @@ -181,12 +174,76 @@ public function getById(int $signRequestId): SignRequest { /** @var SignRequest */ $signRequest = $this->findEntity($qb); - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } return $signRequest; } + /** + * @return \Generator + */ + public function findRemindersCandidates(): \Generator { + $qb = $this->db->getQueryBuilder(); + $qb->select( + 'sr.id AS sr_id', + 'sr.file_id AS sr_file_id', + 'sr.uuid AS sr_uuid', + 'sr.display_name AS sr_display_name', + 'sr.description AS sr_description', + 'sr.metadata AS sr_metadata', + 'sr.signed_hash AS sr_signed_hash', + 'sr.created_at AS sr_created_at', + 'sr.signed AS sr_signed', + + 'im.id AS im_id', + 'im.mandatory AS im_mandatory', + 'im.code AS im_code', + 'im.identifier_key AS im_identifier_key', + 'im.identifier_value AS im_identifier_value', + 'im.attempts AS im_attempts', + 'im.identified_at_date AS im_identified_at_date', + 'im.last_attempt_date AS im_last_attempt_date', + 'im.sign_request_id AS im_sign_request_id', + 'im.metadata AS im_metadata', + ) + ->from('libresign_sign_request', 'sr') + ->join('sr', 'libresign_identify_method', 'im', 'sr.id = im.sign_request_id') + ->join('sr', 'libresign_file', 'f', 'sr.file_id = f.id') + ->where($qb->expr()->isNull('sr.signed')) + ->andWhere($qb->expr()->neq('im.identifier_value', $qb->createNamedParameter('deleted_users'))) + ->andWhere($qb->expr()->in('f.status', $qb->createNamedParameter([ + File::STATUS_ABLE_TO_SIGN, + File::STATUS_PARTIAL_SIGNED + ], IQueryBuilder::PARAM_INT_ARRAY))) + ->setParameter('st', [1,2], IQueryBuilder::PARAM_INT_ARRAY) + ->orderBy('sr.id', 'ASC'); + + $result = $qb->executeQuery(); + try { + while ($row = $result->fetch()) { + $signRequest = new SignRequest(); + $identifyMethod = new IdentifyMethod(); + foreach ($row as $key => $value) { + $prop = $identifyMethod->columnToProperty(substr($key, 3)); + if (str_starts_with($key, 'sr_')) { + $signRequest->{'set' . lcfirst($prop)}($value); + } else { + $identifyMethod->{'set' . lcfirst($prop)}($value); + } + } + $signRequest->resetUpdatedFields(); + $identifyMethod->resetUpdatedFields(); + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; + } + yield $identifyMethod; + } + } finally { + $result->closeCursor(); + } + } + /** * Get all signers by multiple fileId * @@ -245,8 +302,8 @@ public function getByFileUuid(string $uuid) { /** @var SignRequest[] */ $signers = $this->findEntities($qb); foreach ($signers as $signRequest) { - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } } return $signers; @@ -263,8 +320,8 @@ public function getBySignerUuidAndUserId(string $uuid): SignRequest { /** @var SignRequest */ $signRequest = $this->findEntity($qb); - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } return $signRequest; } @@ -301,9 +358,8 @@ public function getByFileIdAndEmail(int $file_id, string $email): SignRequest { } public function getByFileIdAndSignRequestId(int $fileId, int $signRequestId): SignRequest { - $filtered = array_filter($this->signers, fn ($e) => $e->getId() === $signRequestId); - if ($filtered) { - return current($filtered); + if (isset($this->signers[$signRequestId])) { + return $this->signers[$signRequestId]; } $qb = $this->db->getQueryBuilder(); @@ -318,8 +374,8 @@ public function getByFileIdAndSignRequestId(int $fileId, int $signRequestId): Si ); $signRequest = $this->findEntity($qb); - if (!array_filter($this->signers, fn ($s) => $s->getId() === $signRequest->getId())) { - $this->signers[] = $signRequest; + if (!isset($this->signers[$signRequest->getId()])) { + $this->signers[$signRequest->getId()] = $signRequest; } /** @var SignRequest */ return end($this->signers); diff --git a/lib/ResponseDefinitions.php b/lib/ResponseDefinitions.php index be08829590..a18d8f81dc 100644 --- a/lib/ResponseDefinitions.php +++ b/lib/ResponseDefinitions.php @@ -235,6 +235,12 @@ * starred: 0|1, * createdAt: string, * } + * @psalm-type LibresignReminderSettings = array{ + * days_before: non-negative-int, + * days_between: non-negative-int, + * max: non-negative-int, + * send_timer: string, + * } * @psalm-type LibresignCapabilities = array{ * features: list, * config: array{ diff --git a/lib/Service/ReminderService.php b/lib/Service/ReminderService.php new file mode 100644 index 0000000000..fbbc4910b1 --- /dev/null +++ b/lib/Service/ReminderService.php @@ -0,0 +1,221 @@ + $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_before', 0), + 'days_between' => $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_between', 0), + 'max' => $this->appConfig->getValueInt(Application::APP_ID, 'reminder_max', 0), + 'send_timer' => $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', '10:00'), + ]; + } + + public function save( + int $daysBefore = 1, + int $daysBetween = 1, + ?int $max = 5, + string $sendTimer = '10:00', + ): array { + $return = $this->saveConfig($daysBefore, $daysBetween, $max, $sendTimer); + $this->scheduleJob($return['send_timer']); + return $return; + } + + protected function saveConfig( + int $daysBefore = 1, + int $daysBetween = 1, + int $max = 5, + string $sendTimer = '10:00', + ): array { + if ($daysBetween <= 0 + || $daysBefore <= 0 + || $max <= 0 + ) { + $this->appConfig->deleteKey(Application::APP_ID, 'reminder_days_before'); + $this->appConfig->deleteKey(Application::APP_ID, 'reminder_days_between'); + $this->appConfig->deleteKey(Application::APP_ID, 'reminder_max'); + $this->appConfig->deleteKey(Application::APP_ID, 'reminder_send_timer'); + return [ + 'days_before' => 0, + 'days_between' => 0, + 'max' => 0, + 'send_timer' => '', + ]; + } + + $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_before', 0); + if ($previous !== $daysBefore) { + $this->appConfig->setValueInt(Application::APP_ID, 'reminder_days_before', $daysBefore); + } + + $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_between', 0); + if ($previous !== $daysBetween) { + $this->appConfig->setValueInt(Application::APP_ID, 'reminder_days_between', $daysBetween); + } + + $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_max', 0); + if ($previous !== $max) { + $this->appConfig->setValueInt(Application::APP_ID, 'reminder_max', $max); + } + + $previous = $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', ''); + if ($previous !== $sendTimer) { + if (!$sendTimer || !preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d$/', $sendTimer)) { + $sendTimer = '10:00'; + } + $this->appConfig->setValueString(Application::APP_ID, 'reminder_send_timer', $sendTimer); + } + + return [ + 'days_before' => $daysBefore, + 'days_between' => $daysBetween, + 'max' => $max, + 'send_timer' => $sendTimer, + ]; + } + + protected function scheduleJob(string $startTime): void { + $this->jobList->remove( + SendReminders::class, + ); + + $runAfter = $this->getStartTime($startTime); + if (!$runAfter) { + return; + } + + $this->jobList->scheduleAfter( + SendReminders::class, + $runAfter->getTimestamp(), + ); + } + + protected function getStartTime(string $startTime): ?\DateTime { + $timezone = $this->dateTimeZone->getTimeZone(); + + $dateTime = new \DateTime($startTime, $timezone); + $dateTime->setTimezone(new \DateTimeZone('UTC')); + + $now = new \DateTime('now', new \DateTimeZone('UTC')); + if ($dateTime > $now) { + return $dateTime; + } + $dateTime->modify('+1 day'); + + return $dateTime; + } + + public function sendReminders(): void { + $daysBefore = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_before', 0); + if ($daysBefore <= 0) { + return; + } + $daysBetween = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_between', 0); + if ($daysBetween <= 0) { + return; + } + $max = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_max', 0); + if ($max === 0) { + return; + } + + foreach ($this->fetchJob($daysBefore, $daysBetween, $max) as $job) { + $job->notify(); + } + } + + /** + * @return \Generator + */ + protected function fetchJob(int $daysBefore, int $daysBetween, int $max): \Generator { + $now = $this->time->getDateTime('now', $this->dateTimeZone->getTimeZone()); + foreach ($this->signRequestMapper->findRemindersCandidates() as $entityIdentifyMethod) { + $signRequest = $this->signRequestMapper->getById($entityIdentifyMethod->getSignRequestId()); + + $metadata = $signRequest->getMetadata(); + $summarized = $this->getNotificationsSummarized($metadata['notify'] ?? []); + if (!$this->willNotify($summarized, $now, $daysBefore, $daysBetween, $max)) { + continue; + } + + $this->identifyMethodService->setCurrentIdentifyMethod($entityIdentifyMethod); + $identifyMethod = $this->identifyMethodService->getInstanceOfIdentifyMethod( + $entityIdentifyMethod->getIdentifierKey(), + $entityIdentifyMethod->getIdentifierValue(), + ); + yield $identifyMethod; + }; + } + + protected function willNotify(array $summarized, \DateTime $now, int $daysBefore, int $daysBetween, int $max): bool { + if ($this->isMaxReached($summarized['total'], $max)) { + return false; + } + + if ($summarized['total'] === 1) { + return $this->shouldNotifyAfterSomeDays($summarized['first'], $now, $daysBefore); + } + return $this->shouldNotifyAfterSomeDays($summarized['last'], $now, $daysBetween); + } + + + private function isMaxReached(int $total, int $max): bool { + return $max > 0 && $total >= $max; + } + + private function shouldNotifyAfterSomeDays(?\DateTime $date, \DateTime $now, int $maxDays): bool { + $daysAfter = $date?->diff($now)?->days ?? 0; + return $daysAfter > $maxDays; + } + + protected function getNotificationsSummarized(array $notifications): array { + if (empty($notifications)) { + return [ + 'first' => null, + 'last' => null, + 'total' => 0, + ]; + } + $dates = []; + $timeZone = new \DateTimeZone('UTC'); + foreach ($notifications as $notification) { + $dateTime = new \DateTime('@' . $notification['date'], $timeZone); + $dateTime->setTime(0, 0, 0); + $dates[$dateTime->format('Y-m-d')] = $dateTime; + } + $dates = array_values($dates); + usort($dates, fn ($a, $b) => $a <=> $b); + return [ + 'first' => $dates[0], + 'last' => end($dates), + 'total' => count($dates), + ]; + } +} diff --git a/openapi-administration.json b/openapi-administration.json index 9c947225b5..b94030cfed 100644 --- a/openapi-administration.json +++ b/openapi-administration.json @@ -199,6 +199,35 @@ } } }, + "ReminderSettings": { + "type": "object", + "required": [ + "days_before", + "days_between", + "max", + "send_timer" + ], + "properties": { + "days_before": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "days_between": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "max": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "send_timer": { + "type": "string" + } + } + }, "RootCertificate": { "type": "object", "required": [ @@ -2114,6 +2143,187 @@ } } }, + "/ocs/v2.php/apps/libresign/api/{apiVersion}/admin/reminder": { + "get": { + "operationId": "admin-reminder-fetch", + "summary": "Get reminder settings", + "description": "This endpoint requires admin access", + "tags": [ + "admin" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/ReminderSettings" + } + } + } + } + } + } + } + } + } + }, + "post": { + "operationId": "admin-reminder-save", + "summary": "Save reminder", + "description": "This endpoint requires admin access", + "tags": [ + "admin" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "daysBefore": { + "type": "integer", + "format": "int64", + "default": 1, + "description": "First reminder after (days)" + }, + "daysBetween": { + "type": "integer", + "format": "int64", + "default": 1, + "description": "Days between reminders" + }, + "max": { + "type": "integer", + "format": "int64", + "default": 5, + "description": "Max reminders per signer" + }, + "sendTimer": { + "type": "string", + "default": "10:00", + "description": "Send time (HH:mm)" + } + } + } + } + } + }, + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/ReminderSettings" + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/apps/libresign/api/{apiVersion}/setting/has-root-cert": { "get": { "operationId": "setting-has-root-cert", diff --git a/openapi-full.json b/openapi-full.json index 2aa8abb6e6..93fb045032 100644 --- a/openapi-full.json +++ b/openapi-full.json @@ -639,6 +639,35 @@ } } }, + "ReminderSettings": { + "type": "object", + "required": [ + "days_before", + "days_between", + "max", + "send_timer" + ], + "properties": { + "days_before": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "days_between": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "max": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "send_timer": { + "type": "string" + } + } + }, "RootCertificate": { "type": "object", "required": [ @@ -10108,6 +10137,187 @@ } } }, + "/ocs/v2.php/apps/libresign/api/{apiVersion}/admin/reminder": { + "get": { + "operationId": "admin-reminder-fetch", + "summary": "Get reminder settings", + "description": "This endpoint requires admin access", + "tags": [ + "admin" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/ReminderSettings" + } + } + } + } + } + } + } + } + } + }, + "post": { + "operationId": "admin-reminder-save", + "summary": "Save reminder", + "description": "This endpoint requires admin access", + "tags": [ + "admin" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "daysBefore": { + "type": "integer", + "format": "int64", + "default": 1, + "description": "First reminder after (days)" + }, + "daysBetween": { + "type": "integer", + "format": "int64", + "default": 1, + "description": "Days between reminders" + }, + "max": { + "type": "integer", + "format": "int64", + "default": 5, + "description": "Max reminders per signer" + }, + "sendTimer": { + "type": "string", + "default": "10:00", + "description": "Send time (HH:mm)" + } + } + } + } + } + }, + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "$ref": "#/components/schemas/ReminderSettings" + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/apps/libresign/api/{apiVersion}/setting/has-root-cert": { "get": { "operationId": "setting-has-root-cert", diff --git a/src/types/openapi/openapi-administration.ts b/src/types/openapi/openapi-administration.ts index 75dbbacd4c..b6a68428a6 100644 --- a/src/types/openapi/openapi-administration.ts +++ b/src/types/openapi/openapi-administration.ts @@ -247,6 +247,30 @@ export type paths = { patch?: never; trace?: never; }; + "/ocs/v2.php/apps/libresign/api/{apiVersion}/admin/reminder": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get reminder settings + * @description This endpoint requires admin access + */ + get: operations["admin-reminder-fetch"]; + put?: never; + /** + * Save reminder + * @description This endpoint requires admin access + */ + post: operations["admin-reminder-save"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/ocs/v2.php/apps/libresign/api/{apiVersion}/setting/has-root-cert": { parameters: { query?: never; @@ -319,6 +343,15 @@ export type components = { PublicCapabilities: { libresign?: components["schemas"]["Capabilities"]; }; + ReminderSettings: { + /** Format: int64 */ + days_before: number; + /** Format: int64 */ + days_between: number; + /** Format: int64 */ + max: number; + send_timer: string; + }; RootCertificate: { commonName: string; names: components["schemas"]["RootCertificateName"][]; @@ -1094,6 +1127,94 @@ export interface operations { }; }; }; + "admin-reminder-fetch": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: components["schemas"]["ReminderSettings"]; + }; + }; + }; + }; + }; + }; + "admin-reminder-save": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": { + /** + * Format: int64 + * @description First reminder after (days) + * @default 1 + */ + daysBefore?: number; + /** + * Format: int64 + * @description Days between reminders + * @default 1 + */ + daysBetween?: number; + /** + * Format: int64 + * @description Max reminders per signer + * @default 5 + */ + max?: number; + /** + * @description Send time (HH:mm) + * @default 10:00 + */ + sendTimer?: string; + }; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: components["schemas"]["ReminderSettings"]; + }; + }; + }; + }; + }; + }; "setting-has-root-cert": { parameters: { query?: never; diff --git a/src/types/openapi/openapi-full.ts b/src/types/openapi/openapi-full.ts index 55b44f1a47..f2ebea64fb 100644 --- a/src/types/openapi/openapi-full.ts +++ b/src/types/openapi/openapi-full.ts @@ -1174,6 +1174,30 @@ export type paths = { patch?: never; trace?: never; }; + "/ocs/v2.php/apps/libresign/api/{apiVersion}/admin/reminder": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get reminder settings + * @description This endpoint requires admin access + */ + get: operations["admin-reminder-fetch"]; + put?: never; + /** + * Save reminder + * @description This endpoint requires admin access + */ + post: operations["admin-reminder-save"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/ocs/v2.php/apps/libresign/api/{apiVersion}/setting/has-root-cert": { parameters: { query?: never; @@ -1376,6 +1400,15 @@ export type components = { PublicCapabilities: { libresign?: components["schemas"]["Capabilities"]; }; + ReminderSettings: { + /** Format: int64 */ + days_before: number; + /** Format: int64 */ + days_between: number; + /** Format: int64 */ + max: number; + send_timer: string; + }; RootCertificate: { commonName: string; names: components["schemas"]["RootCertificateName"][]; @@ -5201,6 +5234,94 @@ export interface operations { }; }; }; + "admin-reminder-fetch": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: components["schemas"]["ReminderSettings"]; + }; + }; + }; + }; + }; + }; + "admin-reminder-save": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": { + /** + * Format: int64 + * @description First reminder after (days) + * @default 1 + */ + daysBefore?: number; + /** + * Format: int64 + * @description Days between reminders + * @default 1 + */ + daysBetween?: number; + /** + * Format: int64 + * @description Max reminders per signer + * @default 5 + */ + max?: number; + /** + * @description Send time (HH:mm) + * @default 10:00 + */ + sendTimer?: string; + }; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: components["schemas"]["ReminderSettings"]; + }; + }; + }; + }; + }; + }; "setting-has-root-cert": { parameters: { query?: never; diff --git a/src/views/Settings/Reminders.vue b/src/views/Settings/Reminders.vue index a29d6a2990..6bf06a57f0 100644 --- a/src/views/Settings/Reminders.vue +++ b/src/views/Settings/Reminders.vue @@ -15,29 +15,36 @@ :size="20" />
- + this.maxValue) { - return t('libresign', 'The max value is {maxValue}', { maxValue: this.maxValue }) - } - return '' - }, - helperTextRepeatEvery() { - if (this.reminderRepeatEvery > this.maxValue) { - return t('libresign', 'The max value is {maxValue}', { maxValue: this.maxValue }) - } - return '' - }, }, watch: { reminderState(reminderState) { this.reminderState = reminderState if (!reminderState) { this.reminderDaysBefore = 0 - this.reminderRepeatEvery = 0 + this.reminderDaysBetween = 0 + this.reminderMax = 0 this.reminderSendTimer = null this.save() } @@ -132,64 +132,85 @@ export default { async getData() { this.loading = true - const reminderDaysBefore = await axios.get(generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/libresign/reminder_days_before')) - this.reminderDaysBefore = parseInt(reminderDaysBefore.data.ocs.data.data) || 0 - this.previousReminderDaysBefore = this.reminderDaysBefore + await axios.get(generateOcsUrl('/apps/libresign/api/v1/admin/reminder')) + .then(({ data }) => { + const response = data.ocs.data + this.reminderDaysBefore = parseInt(response.days_before) || 0 + this.previousReminderDaysBefore = this.reminderDaysBefore + + this.reminderDaysBetween = parseInt(response.days_between) || 0 + this.previousReminderDaysBetween = this.reminderDaysBetween + + this.reminderMax = parseInt(response.max) || 0 + this.previousReminderMax = this.reminderMax + + this.setSendTimer(response.send_timer) - const reminderRepeatEvery = await axios.get(generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/libresign/reminder_repeat_every')) - this.reminderRepeatEvery = parseInt(reminderRepeatEvery.data.ocs.data.data) || 0 - this.previousReminderRepeatEvery = this.reminderRepeatEvery + this.reminderState = this.reminderDaysBefore > 0 + || this.reminderDaysBetween > 0 + || this.max > 0 - const reminderSendTimer = await axios.get(generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/libresign/reminder_send_timer')) - if (reminderSendTimer?.data?.ocs?.data?.data.length > 0) { - this.reminderSendTimer = new Date('2022-10-10 ' + reminderSendTimer.data.ocs.data.data) + this.loading = false + }) + .catch(() => { + this.loading = false + }) + }, + setSendTimer(timer) { + if (timer.length > 0) { + this.reminderSendTimer = new Date('2022-10-10 ' + timer) } else { this.reminderSendTimer = new Date('2022-10-10 10:00:00') } this.previousReminderSendTimer = this.reminderSendTimer - - this.reminderState = this.reminderDaysBefore > 0 || this.reminderRepeatEvery > 0 - - this.loading = false }, save: debounce(async function() { this.displaySuccessReminderDaysBefore = false - this.displaySuccessReminderRepeatEvery = false + this.displaySuccessReminderDaysBetween = false this.displaySuccessReminderSendTimer = false - if (this.reminderDaysBefore !== this.previousReminderDaysBefore && this.reminderDaysBefore >= 0 && this.reminderDaysBefore <= this.maxValue) { - if (this.reminderDaysBefore > 0) { - await OCP.AppConfig.setValue('libresign', 'reminder_days_before', parseInt(this.reminderDaysBefore, 10) || 0) - } else { - await OCP.AppConfig.deleteKey('libresign', 'reminder_days_before') - } - this.previousReminderDaysBefore = this.reminderDaysBefore - this.displaySuccessReminderDaysBefore = true - setTimeout(() => { this.displaySuccessReminderDaysBefore = false }, 2000) + await axios.post(generateOcsUrl('/apps/libresign/api/v1/admin/reminder'), { + daysBefore: parseInt(this.reminderDaysBefore), + daysBetween: parseInt(this.reminderDaysBetween), + reminderMax: parseInt(this.reminderMax), + sendTimer: this.formatHourMinute(this.reminderSendTimer), + }) + .then(({ data }) => { + const response = data.ocs.data + if (response.days_before !== this.previousReminderDaysBefore) { + this.previousReminderDaysBefore = response.days_before + this.displaySuccessReminderDaysBefore = true + setTimeout(() => { this.displaySuccessReminderDaysBefore = false }, 2000) + } + if (response.days_between !== this.previousReminderDaysBetween) { + this.previousReminderDaysBetween = response.days_between + this.displaySuccessReminderDaysBetween = true + setTimeout(() => { this.displaySuccessReminderDaysBetween = false }, 2000) + } + if (response.days_between !== this.previousReminderMax) { + this.previousReminderMax = response.days_between + this.displaySuccessReminderMax = true + setTimeout(() => { this.displaySuccessReminderMax = false }, 2000) + } + if (response.send_timer !== this.formatHourMinute(this.previousReminderSendTimer)) { + this.setSendTimer(response.send_timer) + this.displaySuccessReminderSendTimer = true + setTimeout(() => { this.displaySuccessReminderSendTimer = false }, 2000) + } + }) + }, 1000), + formatHourMinute(date) { + if (!date) { + return '' } + const hours = date.getHours() + const minutes = date.getMinutes() - if (this.reminderRepeatEvery !== this.previousReminderRepeatEvery && this.reminderRepeatEvery >= 0 && this.reminderRepeatEvery <= this.maxValue) { - if (this.reminderRepeatEvery > 0) { - await OCP.AppConfig.setValue('libresign', 'reminder_repeat_every', parseInt(this.reminderRepeatEvery, 10) || 0) - } else { - await OCP.AppConfig.deleteKey('libresign', 'reminder_repeat_every') - } - this.previousReminderRepeatEvery = this.reminderRepeatEvery - this.displaySuccessReminderRepeatEvery = true - setTimeout(() => { this.displaySuccessReminderRepeatEvery = false }, 2000) - } + const formattedHours = hours < 10 ? '0' + hours : hours + const formattedMinutes = minutes < 10 ? '0' + minutes : minutes - if (this.reminderSendTimer !== this.previousReminderSendTimer) { - if (this.reminderSendTimer instanceof Date) { - await OCP.AppConfig.setValue('libresign', 'reminder_send_timer', this.reminderSendTimer.toISOString().slice(11, 16)) - } else { - await OCP.AppConfig.deleteKey('libresign', 'reminder_send_timer') - } - this.previousReminderSendTimer = this.reminderSendTimer - this.displaySuccessReminderSendTimer = true - setTimeout(() => { this.displaySuccessReminderSendTimer = false }, 2000) - } - }, 1000), + return `${formattedHours}:${formattedMinutes}` + }, }, } @@ -197,10 +218,5 @@ export default { .reminders-content{ display: flex; flex-direction: column; - - :deep(input) { - display: flex; - max-width: 200px - } } diff --git a/tests/php/Unit/Service/ReminderServiceTest.php b/tests/php/Unit/Service/ReminderServiceTest.php new file mode 100644 index 0000000000..dc21e8fc3f --- /dev/null +++ b/tests/php/Unit/Service/ReminderServiceTest.php @@ -0,0 +1,200 @@ +jobList = $this->createMock(IJobList::class); + $this->appConfig = Server::get(IAppConfig::class); + $this->dateTimeZone = Server::get(IDateTimeZone::class); + $this->time = Server::get(ITimeFactory::class); + $this->signRequestMapper = $this->createMock(SignRequestMapper::class); + $this->identifyMethodService = $this->createMock(IdentifyMethodService::class); + } + + private function getService(array $methods = []): ReminderService|MockObject { + if ($methods) { + return $this->getMockBuilder(ReminderService::class) + ->setConstructorArgs([ + $this->jobList, + $this->appConfig, + $this->dateTimeZone, + $this->time, + $this->signRequestMapper, + $this->identifyMethodService, + ]) + ->onlyMethods($methods) + ->getMock(); + } + return new ReminderService( + $this->jobList, + $this->appConfig, + $this->dateTimeZone, + $this->time, + $this->signRequestMapper, + $this->identifyMethodService, + ); + } + + #[DataProvider('providerSummarizeNotifications')] + public function testSummarizeNotifications(array $notifications, array $expected): void { + $service = $this->getService(); + $actual = self::invokePrivate($service, 'getNotificationsSummarized', [$notifications]); + $this->assertEquals($expected, $actual); + } + + public static function providerSummarizeNotifications(): array { + $now = (new DateTime())->setTime(12, 0); + return [ + 'empty' => [[], ['first' => null, 'last' => null, 'total' => 0]], + 'only one' => [ + [['date' => (clone $now)->getTimestamp(), 'method' => 'activity']], + ['first' => (clone $now)->setTime(0, 0), 'last' => (clone $now)->setTime(0, 0), 'total' => 1] + ], + 'same day mixed' => [ + [ + ['date' => (clone $now)->getTimestamp(), 'method' => 'activity'], + ['date' => (clone $now)->modify('+ 1 hour')->getTimestamp(), 'method' => 'notify'], + ['date' => (clone $now)->modify('- 1 hour')->getTimestamp(), 'method' => 'mail'], + ], + ['first' => (clone $now)->setTime(0, 0), 'last' => (clone $now)->setTime(0, 0), 'total' => 1] + ], + 'two days mixed' => [ + [ + ['date' => (clone $now)->getTimestamp(), 'method' => 'activity'], + ['date' => (clone $now)->modify('+ 1 hour')->getTimestamp(), 'method' => 'notify'], + ['date' => (clone $now)->modify('- 1 hour')->getTimestamp(), 'method' => 'mail'], + ['date' => (clone $now)->modify('-2 days')->getTimestamp(), 'method' => 'activity'], + ['date' => (clone $now)->modify('-2 days')->modify('+ 1 hour')->getTimestamp(), 'method' => 'notify'], + ['date' => (clone $now)->modify('-2 days')->modify('- 1 hour')->getTimestamp(), 'method' => 'mail'], + ], + ['first' => (clone $now)->modify('-2 days')->setTime(0, 0), 'last' => (clone $now)->setTime(0, 0), 'total' => 2] + ], + ]; + } + + #[DataProvider('providerWillNotify')] + public function testWillNotify(array $summarized, \DateTime $now, int $daysBefore, int $daysBetween, int $max, bool $expected): void { + $service = $this->getService(); + $actual = self::invokePrivate($service, 'willNotify', [$summarized, $now, $daysBefore, $daysBetween, $max]); + $this->assertEquals($expected, $actual); + } + + public static function providerWillNotify(): array { + $now = (new DateTime())->setTime(12, 0); + + return [ + 'no notifications, should not send with all zero and null' => [ + [ + 'first' => null, + 'last' => null, + 'total' => 0, + ], + 'now' => $now, 'daysBefore' => 0, 'daysBetween' => 0, 'max' => 0, false, + ], + 'no notifications, should not send with daysBetween === 0' => [ + [ + 'first' => null, + 'last' => null, + 'total' => 0, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 0, 'max' => 0, false, + ], + 'no notifications, should not send with daysBetween > 0' => [ + [ + 'first' => null, + 'last' => null, + 'total' => 0, + ], + 'now' => $now, 'daysBefore' => 0, 'daysBetween' => 1, 'max' => 0, false, + ], + 'no notifications, should not send with daysBefore and daysBetween > 0' => [ + [ + 'first' => null, + 'last' => null, + 'total' => 0, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 0, false, + ], + 'one notification, should send' => [ + [ + 'first' => (clone $now)->modify('-2 days'), + 'last' => (clone $now)->modify('-2 days'), + 'total' => 1, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 0, 'max' => 5, true, + ], + 'one notification, should not send with daysBefore <= 0' => [ + [ + 'first' => (clone $now)->modify('-1 day'), + 'last' => (clone $now)->modify('-1 day'), + 'total' => 1, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 0, 'max' => 5, false, + ], + 'two notifications, should not send with between === 1 and last === 1' => [ + [ + 'first' => (clone $now)->modify('-3 days'), + 'last' => (clone $now)->modify('-1 day'), + 'total' => 2, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 5, false, + ], + 'two notifications, should send with between === 1 and last === 2' => [ + [ + 'first' => (clone $now)->modify('-3 days'), + 'last' => (clone $now)->modify('-2 day'), + 'total' => 2, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 5, true, + ], + 'two notifications, should not send with max limit reached' => [ + [ + 'first' => (clone $now)->modify('-3 days'), + 'last' => (clone $now)->modify('-2 day'), + 'total' => 5, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 5, false, + ], + 'two notifications, should send without max limit' => [ + [ + 'first' => (clone $now)->modify('-3 days'), + 'last' => (clone $now)->modify('-2 day'), + 'total' => 5, + ], + 'now' => $now, 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 0, true, + ], + 'two notifications, should not send with daysBetween <= 0' => [ + [ + 'first' => (clone $now)->modify('-2 days'), + 'last' => (clone $now)->modify('-1 day'), + 'total' => 2, + ], + 'now' => $now, 'daysBefore' => 0, 'daysBetween' => 1, 'max' => 5, false, + ], + ]; + } +} From 47e969db97c1cb102f1a9405957a79f4a71e3411 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:03:42 -0300 Subject: [PATCH 0273/5910] chore: cover save method with tests Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Controller/AdminController.php | 8 +-- lib/Service/ReminderService.php | 18 +++---- .../php/Unit/Service/ReminderServiceTest.php | 54 +++++++++++++++++++ 3 files changed, 67 insertions(+), 13 deletions(-) diff --git a/lib/Controller/AdminController.php b/lib/Controller/AdminController.php index 61e3042c26..de6caeb00d 100644 --- a/lib/Controller/AdminController.php +++ b/lib/Controller/AdminController.php @@ -647,10 +647,10 @@ public function reminderFetch(): DataResponse { */ #[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/admin/reminder', requirements: ['apiVersion' => '(v1)'])] public function reminderSave( - int $daysBefore = 1, - int $daysBetween = 1, - int $max = 5, - string $sendTimer = '10:00', + int $daysBefore, + int $daysBetween, + int $max, + string $sendTimer, ): DataResponse { $response = $this->reminderService->save($daysBefore, $daysBetween, $max, $sendTimer); return new DataResponse($response); diff --git a/lib/Service/ReminderService.php b/lib/Service/ReminderService.php index fbbc4910b1..55a909c339 100644 --- a/lib/Service/ReminderService.php +++ b/lib/Service/ReminderService.php @@ -38,10 +38,10 @@ public function getSettings(): array { } public function save( - int $daysBefore = 1, - int $daysBetween = 1, - ?int $max = 5, - string $sendTimer = '10:00', + int $daysBefore, + int $daysBetween, + int $max, + string $sendTimer, ): array { $return = $this->saveConfig($daysBefore, $daysBetween, $max, $sendTimer); $this->scheduleJob($return['send_timer']); @@ -49,10 +49,10 @@ public function save( } protected function saveConfig( - int $daysBefore = 1, - int $daysBetween = 1, - int $max = 5, - string $sendTimer = '10:00', + int $daysBefore, + int $daysBetween, + int $max, + string $sendTimer, ): array { if ($daysBetween <= 0 || $daysBefore <= 0 @@ -85,7 +85,7 @@ protected function saveConfig( $this->appConfig->setValueInt(Application::APP_ID, 'reminder_max', $max); } - $previous = $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', ''); + $previous = $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', '10:00'); if ($previous !== $sendTimer) { if (!$sendTimer || !preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d$/', $sendTimer)) { $sendTimer = '10:00'; diff --git a/tests/php/Unit/Service/ReminderServiceTest.php b/tests/php/Unit/Service/ReminderServiceTest.php index dc21e8fc3f..9a29083921 100644 --- a/tests/php/Unit/Service/ReminderServiceTest.php +++ b/tests/php/Unit/Service/ReminderServiceTest.php @@ -197,4 +197,58 @@ public static function providerWillNotify(): array { ], ]; } + + #[DataProvider('providerSave')] + public function testSave( + int $daysBefore, + int $daysBetween, + int $max, + string $sendTimer, + array $expected, + ): void { + $service = $this->getService(); + $actual = $service->save($daysBefore, $daysBetween, $max, $sendTimer); + $this->assertEquals($expected, $actual); + } + + public static function providerSave(): array { + return [ + [ + 'daysBefore' => 0, 'daysBetween' => 0, 'max' => 0, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 0, 'daysBetween' => 0, 'max' => 1, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 0, 'daysBetween' => 1, 'max' => 0, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 0, 'daysBetween' => 1, 'max' => 1, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 1, 'daysBetween' => 0, 'max' => 0, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 0, 'sendTimer' => '', + 'expected' => ['days_before' => 0, 'days_between' => 0, 'max' => 0, 'send_timer' => ''], + ], + [ + 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 1, 'sendTimer' => '', + 'expected' => ['days_before' => 1, 'days_between' => 1, 'max' => 1, 'send_timer' => '10:00'], + ], + [ + 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 1, 'sendTimer' => '11:05:00', + 'expected' => ['days_before' => 1, 'days_between' => 1, 'max' => 1, 'send_timer' => '10:00'], + ], + [ + 'daysBefore' => 1, 'daysBetween' => 1, 'max' => 1, 'sendTimer' => '11:05', + 'expected' => ['days_before' => 1, 'days_between' => 1, 'max' => 1, 'send_timer' => '11:05'], + ], + ]; + } } From fe48a6fbf6325d886fb5cd4d5d9906b152cac186 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:09:03 -0300 Subject: [PATCH 0274/5910] chore: rename job Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- appinfo/info.xml | 2 +- lib/BackgroundJob/{SendReminders.php => Reminders.php} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename lib/BackgroundJob/{SendReminders.php => Reminders.php} (95%) diff --git a/appinfo/info.xml b/appinfo/info.xml index c74fa7692d..8722321bdb 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -51,7 +51,7 @@ Developed with ❤️ by [LibreCode](https://librecode.coop). Help us transform OCA\Libresign\BackgroundJob\UserDeleted - OCA\Libresign\BackgroundJob\SendReminders + OCA\Libresign\BackgroundJob\Reminders diff --git a/lib/BackgroundJob/SendReminders.php b/lib/BackgroundJob/Reminders.php similarity index 95% rename from lib/BackgroundJob/SendReminders.php rename to lib/BackgroundJob/Reminders.php index bc8cf81a0b..1da43c69ae 100644 --- a/lib/BackgroundJob/SendReminders.php +++ b/lib/BackgroundJob/Reminders.php @@ -14,7 +14,7 @@ use OCP\BackgroundJob\TimedJob; use Psr\Log\LoggerInterface; -class SendReminders extends TimedJob { +class Reminders extends TimedJob { public function __construct( protected ITimeFactory $time, protected LoggerInterface $logger, From 40659dcac089df695ef851aad2333e6645d58663 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:10:11 -0300 Subject: [PATCH 0275/5910] fix: docblock and visibility Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/BackgroundJob/Reminders.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/BackgroundJob/Reminders.php b/lib/BackgroundJob/Reminders.php index 1da43c69ae..5e9722bd47 100644 --- a/lib/BackgroundJob/Reminders.php +++ b/lib/BackgroundJob/Reminders.php @@ -12,12 +12,10 @@ use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\TimedJob; -use Psr\Log\LoggerInterface; class Reminders extends TimedJob { public function __construct( - protected ITimeFactory $time, - protected LoggerInterface $logger, + ITimeFactory $time, protected ReminderService $reminderService, ) { parent::__construct($time); @@ -28,7 +26,7 @@ public function __construct( } /** - * @param array $argument + * @inheritDoc */ public function run($argument): void { $this->reminderService->sendReminders(); From 4c52c6efd8ab6816900e187468a4f3c7bede4afe Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:11:06 -0300 Subject: [PATCH 0276/5910] fix: use singular class name Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- appinfo/info.xml | 2 +- lib/BackgroundJob/{Reminders.php => Reminder.php} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename lib/BackgroundJob/{Reminders.php => Reminder.php} (95%) diff --git a/appinfo/info.xml b/appinfo/info.xml index 8722321bdb..6fb033ae5e 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -51,7 +51,7 @@ Developed with ❤️ by [LibreCode](https://librecode.coop). Help us transform OCA\Libresign\BackgroundJob\UserDeleted - OCA\Libresign\BackgroundJob\Reminders + OCA\Libresign\BackgroundJob\Reminder diff --git a/lib/BackgroundJob/Reminders.php b/lib/BackgroundJob/Reminder.php similarity index 95% rename from lib/BackgroundJob/Reminders.php rename to lib/BackgroundJob/Reminder.php index 5e9722bd47..69f7d65cdf 100644 --- a/lib/BackgroundJob/Reminders.php +++ b/lib/BackgroundJob/Reminder.php @@ -13,7 +13,7 @@ use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\TimedJob; -class Reminders extends TimedJob { +class Reminder extends TimedJob { public function __construct( ITimeFactory $time, protected ReminderService $reminderService, From 486e6f9294ffb25d19a933e4ce02e8d533865ae3 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 08:11:24 -0300 Subject: [PATCH 0277/5910] chore: order jobs at info.xml Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 6fb033ae5e..8d1d96ceb3 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -50,8 +50,8 @@ Developed with ❤️ by [LibreCode](https://librecode.coop). Help us transform aarch64 - OCA\Libresign\BackgroundJob\UserDeleted OCA\Libresign\BackgroundJob\Reminder + OCA\Libresign\BackgroundJob\UserDeleted From 6aa11a15991acfb67e3caac14ae97c75fae02587 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 14:25:44 -0300 Subject: [PATCH 0278/5910] fix: rename class Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/ReminderService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Service/ReminderService.php b/lib/Service/ReminderService.php index 55a909c339..dabae70788 100644 --- a/lib/Service/ReminderService.php +++ b/lib/Service/ReminderService.php @@ -9,7 +9,7 @@ namespace OCA\Libresign\Service; use OCA\Libresign\AppInfo\Application; -use OCA\Libresign\BackgroundJob\SendReminders; +use OCA\Libresign\BackgroundJob\Reminder; use OCA\Libresign\Db\SignRequestMapper; use OCA\Libresign\Service\IdentifyMethod\IIdentifyMethod; use OCP\AppFramework\Utility\ITimeFactory; @@ -103,7 +103,7 @@ protected function saveConfig( protected function scheduleJob(string $startTime): void { $this->jobList->remove( - SendReminders::class, + Reminder::class, ); $runAfter = $this->getStartTime($startTime); @@ -112,7 +112,7 @@ protected function scheduleJob(string $startTime): void { } $this->jobList->scheduleAfter( - SendReminders::class, + Reminder::class, $runAfter->getTimestamp(), ); } From 4a6f31ba134cd9dd682cb463d44c9ca2a614e46c Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 8 Sep 2025 14:32:59 -0300 Subject: [PATCH 0279/5910] fix: update openapi Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- openapi-administration.json | 12 +++++++----- openapi-full.json | 12 +++++++----- src/types/openapi/openapi-administration.ts | 18 ++++++------------ src/types/openapi/openapi-full.ts | 18 ++++++------------ 4 files changed, 26 insertions(+), 34 deletions(-) diff --git a/openapi-administration.json b/openapi-administration.json index b94030cfed..25584584a4 100644 --- a/openapi-administration.json +++ b/openapi-administration.json @@ -2232,33 +2232,35 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "type": "object", + "required": [ + "daysBefore", + "daysBetween", + "max", + "sendTimer" + ], "properties": { "daysBefore": { "type": "integer", "format": "int64", - "default": 1, "description": "First reminder after (days)" }, "daysBetween": { "type": "integer", "format": "int64", - "default": 1, "description": "Days between reminders" }, "max": { "type": "integer", "format": "int64", - "default": 5, "description": "Max reminders per signer" }, "sendTimer": { "type": "string", - "default": "10:00", "description": "Send time (HH:mm)" } } diff --git a/openapi-full.json b/openapi-full.json index 93fb045032..a4addb1a79 100644 --- a/openapi-full.json +++ b/openapi-full.json @@ -10226,33 +10226,35 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "type": "object", + "required": [ + "daysBefore", + "daysBetween", + "max", + "sendTimer" + ], "properties": { "daysBefore": { "type": "integer", "format": "int64", - "default": 1, "description": "First reminder after (days)" }, "daysBetween": { "type": "integer", "format": "int64", - "default": 1, "description": "Days between reminders" }, "max": { "type": "integer", "format": "int64", - "default": 5, "description": "Max reminders per signer" }, "sendTimer": { "type": "string", - "default": "10:00", "description": "Send time (HH:mm)" } } diff --git a/src/types/openapi/openapi-administration.ts b/src/types/openapi/openapi-administration.ts index b6a68428a6..6487e3df5e 100644 --- a/src/types/openapi/openapi-administration.ts +++ b/src/types/openapi/openapi-administration.ts @@ -1169,32 +1169,26 @@ export interface operations { }; cookie?: never; }; - requestBody?: { + requestBody: { content: { "application/json": { /** * Format: int64 * @description First reminder after (days) - * @default 1 */ - daysBefore?: number; + daysBefore: number; /** * Format: int64 * @description Days between reminders - * @default 1 */ - daysBetween?: number; + daysBetween: number; /** * Format: int64 * @description Max reminders per signer - * @default 5 - */ - max?: number; - /** - * @description Send time (HH:mm) - * @default 10:00 */ - sendTimer?: string; + max: number; + /** @description Send time (HH:mm) */ + sendTimer: string; }; }; }; diff --git a/src/types/openapi/openapi-full.ts b/src/types/openapi/openapi-full.ts index f2ebea64fb..1fa16ba3c9 100644 --- a/src/types/openapi/openapi-full.ts +++ b/src/types/openapi/openapi-full.ts @@ -5276,32 +5276,26 @@ export interface operations { }; cookie?: never; }; - requestBody?: { + requestBody: { content: { "application/json": { /** * Format: int64 * @description First reminder after (days) - * @default 1 */ - daysBefore?: number; + daysBefore: number; /** * Format: int64 * @description Days between reminders - * @default 1 */ - daysBetween?: number; + daysBetween: number; /** * Format: int64 * @description Max reminders per signer - * @default 5 - */ - max?: number; - /** - * @description Send time (HH:mm) - * @default 10:00 */ - sendTimer?: string; + max: number; + /** @description Send time (HH:mm) */ + sendTimer: string; }; }; }; From f4f5f129c0cc804886fd17ab3efff6081b1c495d Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 9 Sep 2025 02:33:28 +0000 Subject: [PATCH 0280/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 3 ++- l10n/be.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/l10n/be.js b/l10n/be.js index 1f3c98dcb8..4434e9742e 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -45,7 +45,7 @@ OC.L10N.register( "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", "Type" : "Тып", - "Status" : "Стан", + "Status" : "Статус", "Actions" : "Дзеянні", "Upload certificate" : "Запампаваць сертыфікат", "Read certificate" : "Прачытаць сертыфікат", @@ -75,6 +75,7 @@ OC.L10N.register( "Switch to grid view" : "Пераключыцца ў выгляд сеткі", "1 file" : "1 файл", "{fileCount} files" : "{fileCount} файлы", + "Total rows summary" : "Зводка па ўсіх радках", "\"{displayName}\" batch action executed successfully" : "Пакетнае дзеянне \"{displayName}\" паспяхова выканана", "\"{displayName}\" action failed" : "Не ўдалося выканаць дзеянне \"{displayName}\"", "(selected)" : "(выбраны)", diff --git a/l10n/be.json b/l10n/be.json index 3eaca9f994..b2e0ac932c 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -43,7 +43,7 @@ "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", "Type" : "Тып", - "Status" : "Стан", + "Status" : "Статус", "Actions" : "Дзеянні", "Upload certificate" : "Запампаваць сертыфікат", "Read certificate" : "Прачытаць сертыфікат", @@ -73,6 +73,7 @@ "Switch to grid view" : "Пераключыцца ў выгляд сеткі", "1 file" : "1 файл", "{fileCount} files" : "{fileCount} файлы", + "Total rows summary" : "Зводка па ўсіх радках", "\"{displayName}\" batch action executed successfully" : "Пакетнае дзеянне \"{displayName}\" паспяхова выканана", "\"{displayName}\" action failed" : "Не ўдалося выканаць дзеянне \"{displayName}\"", "(selected)" : "(выбраны)", From f1bf393d48b05b629e905613fde1f81658d7c5df Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:37:30 -0300 Subject: [PATCH 0281/5910] chore: rename var https://github.com/LibreSign/libresign/pull/5416#discussion_r2331309303 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/ReminderService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Service/ReminderService.php b/lib/Service/ReminderService.php index dabae70788..002736e614 100644 --- a/lib/Service/ReminderService.php +++ b/lib/Service/ReminderService.php @@ -43,9 +43,9 @@ public function save( int $max, string $sendTimer, ): array { - $return = $this->saveConfig($daysBefore, $daysBetween, $max, $sendTimer); - $this->scheduleJob($return['send_timer']); - return $return; + $config = $this->saveConfig($daysBefore, $daysBetween, $max, $sendTimer); + $this->scheduleJob($config['send_timer']); + return $config; } protected function saveConfig( From 3e5eedb70a43cb79df7ad7330378b3592956433c Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:38:05 -0300 Subject: [PATCH 0282/5910] chore: make the code more readdable https://github.com/LibreSign/libresign/pull/5416#discussion_r2331311613 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/ReminderService.php | 47 ++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/lib/Service/ReminderService.php b/lib/Service/ReminderService.php index 002736e614..b9a7184c3e 100644 --- a/lib/Service/ReminderService.php +++ b/lib/Service/ReminderService.php @@ -70,28 +70,12 @@ protected function saveConfig( ]; } - $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_before', 0); - if ($previous !== $daysBefore) { - $this->appConfig->setValueInt(Application::APP_ID, 'reminder_days_before', $daysBefore); - } - - $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_days_between', 0); - if ($previous !== $daysBetween) { - $this->appConfig->setValueInt(Application::APP_ID, 'reminder_days_between', $daysBetween); - } - - $previous = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_max', 0); - if ($previous !== $max) { - $this->appConfig->setValueInt(Application::APP_ID, 'reminder_max', $max); - } + $sendTimer = $this->normalizeTime($sendTimer); - $previous = $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', '10:00'); - if ($previous !== $sendTimer) { - if (!$sendTimer || !preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d$/', $sendTimer)) { - $sendTimer = '10:00'; - } - $this->appConfig->setValueString(Application::APP_ID, 'reminder_send_timer', $sendTimer); - } + $this->setIfChangedInt('reminder_days_before', $daysBefore); + $this->setIfChangedInt('reminder_days_between', $daysBetween); + $this->setIfChangedInt('reminder_max', $max); + $this->setIfChangedString('reminder_send_timer', $sendTimer); return [ 'days_before' => $daysBefore, @@ -101,6 +85,27 @@ protected function saveConfig( ]; } + private function normalizeTime(string $time): string { + if (!$time || !preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d$/', $time)) { + return '10:00'; + } + return $time; + } + + private function setIfChangedInt(string $key, int $value, int $default = 0): void { + $prev = $this->appConfig->getValueInt(Application::APP_ID, $key, $default); + if ($prev !== $value) { + $this->appConfig->setValueInt(Application::APP_ID, $key, $value); + } + } + + private function setIfChangedString(string $key, string $value, string $default = ''): void { + $prev = $this->appConfig->getValueString(Application::APP_ID, $key, $default); + if ($prev !== $value) { + $this->appConfig->setValueString(Application::APP_ID, $key, $value); + } + } + protected function scheduleJob(string $startTime): void { $this->jobList->remove( Reminder::class, From b6febf0511a189dd50a72ce1f8334bf9631b5d9f Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:38:55 -0300 Subject: [PATCH 0283/5910] fix: translation tip https://github.com/LibreSign/libresign/pull/5416#discussion_r2331418997 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- src/views/Settings/Reminders.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Settings/Reminders.vue b/src/views/Settings/Reminders.vue index 6bf06a57f0..d880cf638c 100644 --- a/src/views/Settings/Reminders.vue +++ b/src/views/Settings/Reminders.vue @@ -83,7 +83,7 @@ export default { return { name: t('libresign', 'Reminders'), description: t('libresign', 'Follow up with automatic reminders. Signers will receive reminders until they sign or decline.'), - // TRANSLATORS The time that will send a sign reminder to a signer + // TRANSLATORS The time that a sign reminder will be sent to a signer labelReminderSendTimer: t('libresign', 'Send time (HH:mm)'), helperTextDaysBefore: t('libresign', 'The first message is not considered a notification'), helperTextMax: t('libresign', 'Zero or empty is no reminder.'), From 724eaf2131b78d8c82273fa3ab2095910b133230 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:39:19 -0300 Subject: [PATCH 0284/5910] chore: use finally instead of catch https://github.com/LibreSign/libresign/pull/5416#discussion_r2331423404 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- src/views/Settings/Reminders.vue | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/views/Settings/Reminders.vue b/src/views/Settings/Reminders.vue index d880cf638c..eb45aa3949 100644 --- a/src/views/Settings/Reminders.vue +++ b/src/views/Settings/Reminders.vue @@ -149,10 +149,8 @@ export default { this.reminderState = this.reminderDaysBefore > 0 || this.reminderDaysBetween > 0 || this.max > 0 - - this.loading = false }) - .catch(() => { + .finally(() => { this.loading = false }) }, From 978472297ea44eff245531400f3f88678483b6e4 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:00:28 -0300 Subject: [PATCH 0285/5910] fix: make possible test when delete a key Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- tests/php/lib/AppConfigOverwrite.php | 118 ++++++++++++++++++++------- 1 file changed, 87 insertions(+), 31 deletions(-) diff --git a/tests/php/lib/AppConfigOverwrite.php b/tests/php/lib/AppConfigOverwrite.php index 77a9609ec8..b8f206d1dd 100644 --- a/tests/php/lib/AppConfigOverwrite.php +++ b/tests/php/lib/AppConfigOverwrite.php @@ -2,7 +2,7 @@ declare(strict_types=1); /** - * SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors + * SPDX-FileCopyrightText: 2020-2025 LibreCode coop and contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -19,7 +19,8 @@ class AppConfigOverwrite extends AppConfig { /** @var string|bool|array|float|int[][] */ - private $overWrite = []; + private array $overWrite = []; + private array $deleted = []; public function __construct( IDBConnection $connection, @@ -47,11 +48,12 @@ public function getValueMixed( string $default = '', ?bool $lazy = false, ): string { - if (isset($this->overWrite[$app]) && isset($this->overWrite[$app][$key])) { - return $this->overWrite[$app][$key]; - } - - return parent::getValue($app, $key, $default); + return $this->getOverwrite( + $app, + $key, + $default, + fn () => parent::getValue($app, $key, (string)$default) // AppConfig::getValue retorna string + ); } public function setValueMixed( @@ -61,57 +63,111 @@ public function setValueMixed( bool $lazy = false, bool $sensitive = false, ): bool { - $this->overWrite[$app][$key] = $value; - return true; + return $this->setOverwrite($app, $key, $value); } public function hasKey(string $app, string $key, ?bool $lazy = false): bool { - if (isset($this->overWrite[$app]) && isset($this->overWrite[$app][$key])) { + if ($this->isDeleted($app, $key)) { + return false; + } + if (isset($this->overWrite[$app]) && array_key_exists($key, $this->overWrite[$app])) { return true; } return parent::hasKey($app, $key, $lazy); } public function getValueArray(string $app, string $key, array $default = [], bool $lazy = false): array { - if (isset($this->overWrite[$app]) && isset($this->overWrite[$app][$key])) { - return $this->overWrite[$app][$key]; - } - - return parent::getValueArray($app, $key, $default); + return $this->getOverwrite( + $app, + $key, + $default, + fn () => parent::getValueArray($app, $key, $default), + ); } public function setValueArray(string $app, string $key, array $value, bool $lazy = false, bool $sensitive = false): bool { - $this->overWrite[$app][$key] = $value; - return true; + return $this->setOverwrite($app, $key, $value); + } + + public function getValueBool(string $app, string $key, bool $default = false, bool $lazy = false): bool { + return $this->getOverwrite( + $app, + $key, + $default, + fn () => parent::getValueBool($app, $key, $default) + ); } public function setValueBool(string $app, string $key, bool $value, bool $lazy = false): bool { - $this->overWrite[$app][$key] = $value; - return true; + return $this->setOverwrite($app, $key, $value); } - public function getValueBool(string $app, string $key, bool $default = false, bool $lazy = false): bool { - if (isset($this->overWrite[$app]) && isset($this->overWrite[$app][$key])) { - return $this->overWrite[$app][$key]; - } + public function getValueString(string $app, string $key, string $default = '', bool $lazy = false): string { + return $this->getOverwrite( + $app, + $key, + $default, + fn () => parent::getValueString($app, $key, $default) + ); + } - return parent::getValueBool($app, $key, $default); + public function setValueString(string $app, string $key, string $value, bool $lazy = false, bool $sensitive = false): bool { + return $this->setOverwrite($app, $key, $value); } - public function getValueString(string $app, string $key, string $default = '', bool $lazy = false): string { - if (isset($this->overWrite[$app]) && isset($this->overWrite[$app][$key])) { - return $this->overWrite[$app][$key]; + public function getValueInt(string $app, string $key, int $default = 0, bool $lazy = false): int { + return $this->getOverwrite( + $app, + $key, + $default, + fn () => parent::getValueInt($app, $key, $default) + ); + } + + public function setValueInt(string $app, string $key, int $value, bool $lazy = false, bool $sensitive = false): bool { + return $this->setOverwrite($app, $key, $value); + } + + public function deleteKey(string $app, string $key): void { + if (isset($this->overWrite[$app])) { + unset($this->overWrite[$app][$key]); + if (empty($this->overWrite[$app])) { + unset($this->overWrite[$app]); + } } + $this->markDeleted($app, $key); + } - return parent::getValueString($app, $key, $default); + private function isDeleted(string $app, string $key): bool { + return isset($this->deleted[$app][$key]); } - public function setValueString(string $app, string $key, string $value, bool $lazy = false, bool $sensitive = false): bool { + private function markDeleted(string $app, string $key): void { + $this->deleted[$app][$key] = true; + } + + private function clearDeleted(string $app, string $key): void { + if (isset($this->deleted[$app][$key])) { + unset($this->deleted[$app][$key]); + if (empty($this->deleted[$app])) { + unset($this->deleted[$app]); + } + } + } + + private function setOverwrite(string $app, string $key, mixed $value): bool { $this->overWrite[$app][$key] = $value; + $this->clearDeleted($app, $key); return true; } - public function deleteKey(string $app, string $key): void { - unset($this->overWrite[$app][$key]); + private function getOverwrite(string $app, string $key, mixed $default, callable $parentGetter): mixed { + if ($this->isDeleted($app, $key)) { + return $default; + } + if (isset($this->overWrite[$app]) && array_key_exists($key, $this->overWrite[$app])) { + return $this->overWrite[$app][$key]; + } + return $parentGetter(); } } From 77ed0ecec6dd251a3dd81486435f019ba8c3294e Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:08:16 -0300 Subject: [PATCH 0286/5910] chore: test if value was correctly saved Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- tests/php/Unit/Service/ReminderServiceTest.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/php/Unit/Service/ReminderServiceTest.php b/tests/php/Unit/Service/ReminderServiceTest.php index 9a29083921..4567890b2b 100644 --- a/tests/php/Unit/Service/ReminderServiceTest.php +++ b/tests/php/Unit/Service/ReminderServiceTest.php @@ -7,6 +7,7 @@ declare(strict_types=1); +use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Db\SignRequestMapper; use OCA\Libresign\Service\IdentifyMethodService; use OCA\Libresign\Service\ReminderService; @@ -28,7 +29,7 @@ final class ReminderServiceTest extends \OCA\Libresign\Tests\Unit\TestCase { public function setUp(): void { $this->jobList = $this->createMock(IJobList::class); - $this->appConfig = Server::get(IAppConfig::class); + $this->appConfig = $this->getMockAppConfig(); $this->dateTimeZone = Server::get(IDateTimeZone::class); $this->time = Server::get(ITimeFactory::class); $this->signRequestMapper = $this->createMock(SignRequestMapper::class); @@ -209,6 +210,20 @@ public function testSave( $service = $this->getService(); $actual = $service->save($daysBefore, $daysBetween, $max, $sendTimer); $this->assertEquals($expected, $actual); + + $keys = [ + 'days_before', + 'days_between', + 'max', + ]; + + foreach ($keys as $key) { + $actualConfig = $this->appConfig->getValueInt(Application::APP_ID, 'reminder_' . $key, $actual[$key]); + $this->assertEquals($actual[$key], $actualConfig); + } + + $actualConfig = $this->appConfig->getValueString(Application::APP_ID, 'reminder_send_timer', $actual['send_timer']); + $this->assertEquals($actual['send_timer'], $actualConfig); } public static function providerSave(): array { From 25d97a6ced1768eaf20f5f0637e16846812fcb1c Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 10 Sep 2025 02:34:19 +0000 Subject: [PATCH 0287/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/fi.js | 1 + l10n/fi.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/fi.js b/l10n/fi.js index 65c2c29733..9b8b993e39 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -128,6 +128,7 @@ OC.L10N.register( "Status" : "Tila", "Actions" : "Toiminnot", "Delete certificate" : "Poista varmenne", + "Change password" : "Vaihda salasana", "Your signatures" : "Omat allekirjoitukset", "Signature" : "Allekirjoitus", "Initials" : "Nimikirjaimet", diff --git a/l10n/fi.json b/l10n/fi.json index bb275e45f2..046ffc4944 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -126,6 +126,7 @@ "Status" : "Tila", "Actions" : "Toiminnot", "Delete certificate" : "Poista varmenne", + "Change password" : "Vaihda salasana", "Your signatures" : "Omat allekirjoitukset", "Signature" : "Allekirjoitus", "Initials" : "Nimikirjaimet", From 22b2905e2edcf6db46ff0c7f537406e0e55ebdb4 Mon Sep 17 00:00:00 2001 From: Kemal Oktay Date: Thu, 11 Sep 2025 00:55:19 +0300 Subject: [PATCH 0288/5910] fix: set TZ=UTC for pdfsig and pdfinfo command (#5424) Co-authored-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Signed-off-by: Kemal Oktay --- lib/Handler/SignEngine/Pkcs12Handler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Handler/SignEngine/Pkcs12Handler.php b/lib/Handler/SignEngine/Pkcs12Handler.php index bcec061d76..eead7c3b56 100644 --- a/lib/Handler/SignEngine/Pkcs12Handler.php +++ b/lib/Handler/SignEngine/Pkcs12Handler.php @@ -151,7 +151,7 @@ private function popplerUtilsPdfSignFallback($resource, int $signerCounter): arr $tempFile = $this->tempManager->getTemporaryFile('file.pdf'); file_put_contents($tempFile, $content); - $content = shell_exec('pdfsig ' . $tempFile); + $content = shell_exec('env TZ=UTC pdfsig ' . $tempFile); if (empty($content)) { return []; } From cb3fd431a72188d58c8db8b2df924b5141497814 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 5 Sep 2025 16:34:39 -0300 Subject: [PATCH 0289/5910] fix: use utc as timezone when read data from signed document Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Handler/SignEngine/Pkcs12Handler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Handler/SignEngine/Pkcs12Handler.php b/lib/Handler/SignEngine/Pkcs12Handler.php index eead7c3b56..c3fce4942d 100644 --- a/lib/Handler/SignEngine/Pkcs12Handler.php +++ b/lib/Handler/SignEngine/Pkcs12Handler.php @@ -172,7 +172,7 @@ private function popplerUtilsPdfSignFallback($resource, int $signerCounter): arr if ($isSecondLevel) { switch ((string)$match['key']) { case 'Signing Time': - $this->signaturesFromPoppler[$lastSignature]['signingTime'] = DateTime::createFromFormat('M d Y H:i:s', $match['value']); + $this->signaturesFromPoppler[$lastSignature]['signingTime'] = DateTime::createFromFormat('M d Y H:i:s', $match['value'], new \DateTimeZone('UTC')); break; case 'Signer full Distinguished Name': $this->signaturesFromPoppler[$lastSignature]['chain'][0]['subject'] = $this->parseDistinguishedNameWithMultipleValues($match['value']); From 7b5ff7caf4a3b9a299e111d3f9a0b7211b963e32 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 11 Sep 2025 02:31:37 +0000 Subject: [PATCH 0290/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 1 + l10n/be.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/be.js b/l10n/be.js index 4434e9742e..ec5de9bd7f 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -54,6 +54,7 @@ OC.L10N.register( "Change password" : "Змяніць пароль", "Signature" : "Подпіс", "Profile picture" : "Аватар профілю", + "Passwords does not match" : "Паролі не супадаюць", "Create account" : "Стварыць уліковы запіс", "Password" : "Пароль", "Password Creation" : "Стварэнне пароля", diff --git a/l10n/be.json b/l10n/be.json index b2e0ac932c..d8b8a7699a 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -52,6 +52,7 @@ "Change password" : "Змяніць пароль", "Signature" : "Подпіс", "Profile picture" : "Аватар профілю", + "Passwords does not match" : "Паролі не супадаюць", "Create account" : "Стварыць уліковы запіс", "Password" : "Пароль", "Password Creation" : "Стварэнне пароля", From fbde1a9b942fbae62e882b46893b112c5923f311 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 12 Sep 2025 10:43:06 -0300 Subject: [PATCH 0291/5910] chore(release): Changelog for 10.10.0, 11.4.0 and 12.0.0 [skip ci] Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fef5ad448c..911988075a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,38 @@ Types of changes: +## 12.0.0-beta.1 - 2025-09-12 +### Changes +- Say hello to Nextcloud 32 + +## 11.3.2 - 2025-09-12 +### Features +- feat: implement reminders to signers [#5434](https://github.com/LibreSign/libresign/pull/5434) + +### Changes +- Update translations +- chore: add log to make possible debug issues at certificate chain [#5411](https://github.com/LibreSign/libresign/pull/5411) + +### Fixes +- fix: isolate PHP-pdftk dependency [#5413](https://github.com/LibreSign/libresign/pull/5413) +- fix: prevent error when try to create a folder two times [#5421](https://github.com/LibreSign/libresign/pull/5421) +- fix: set TZ=UTC for pdfsig [#5427](https://github.com/LibreSign/libresign/pull/5427) +- fix: use utc as timezone when read data from signed document [#5430](https://github.com/LibreSign/libresign/pull/5430) + +## 10.9.2 - 2025-09-12 +### Features +- feat: implement reminders to signers [#5433](https://github.com/LibreSign/libresign/pull/5433) + +### Changes +- Update translations +- chore: add log to make possible debug issues at certificate chain [#5410](https://github.com/LibreSign/libresign/pull/5410) + +### Fixes +- fix: isolate PHP-pdftk dependency [#5412](https://github.com/LibreSign/libresign/pull/5412) +- fix: prevent error when try to create a folder two times [#5420](https://github.com/LibreSign/libresign/pull/5420) +- fix: set TZ=UTC for pdfsig [#5428](https://github.com/LibreSign/libresign/pull/5428) +- fix: use utc as timezone when read data from signed document [#5431](https://github.com/LibreSign/libresign/pull/5431) + ## 11.3.2 - 2025-09-02 ### Changes - Update translations From a44b14fd7a1141aafd88126caa977fd59d32921e Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 12 Sep 2025 11:17:13 -0300 Subject: [PATCH 0292/5910] fix: version number Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 911988075a..f1225306fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Types of changes: ### Changes - Say hello to Nextcloud 32 -## 11.3.2 - 2025-09-12 +## 11.4.0 - 2025-09-12 ### Features - feat: implement reminders to signers [#5434](https://github.com/LibreSign/libresign/pull/5434) @@ -37,7 +37,7 @@ Types of changes: - fix: set TZ=UTC for pdfsig [#5427](https://github.com/LibreSign/libresign/pull/5427) - fix: use utc as timezone when read data from signed document [#5430](https://github.com/LibreSign/libresign/pull/5430) -## 10.9.2 - 2025-09-12 +## 10.10.0 - 2025-09-12 ### Features - feat: implement reminders to signers [#5433](https://github.com/LibreSign/libresign/pull/5433) From 346e4225fe3a541d7fbb94551588a16989ce4736 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 13 Sep 2025 02:29:58 +0000 Subject: [PATCH 0293/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 2 ++ l10n/be.json | 2 ++ l10n/bg.js | 1 + l10n/bg.json | 1 + l10n/ca.js | 2 ++ l10n/ca.json | 2 ++ l10n/cs.js | 2 ++ l10n/cs.json | 2 ++ l10n/cy_GB.js | 2 ++ l10n/cy_GB.json | 2 ++ l10n/da.js | 2 ++ l10n/da.json | 2 ++ l10n/de.js | 2 ++ l10n/de.json | 2 ++ l10n/de_DE.js | 2 ++ l10n/de_DE.json | 2 ++ l10n/el.js | 2 ++ l10n/el.json | 2 ++ l10n/en_GB.js | 2 ++ l10n/en_GB.json | 2 ++ l10n/eo.js | 1 + l10n/eo.json | 1 + l10n/es.js | 2 ++ l10n/es.json | 2 ++ l10n/es_419.js | 1 + l10n/es_419.json | 1 + l10n/es_AR.js | 1 + l10n/es_AR.json | 1 + l10n/es_CL.js | 1 + l10n/es_CL.json | 1 + l10n/es_CO.js | 1 + l10n/es_CO.json | 1 + l10n/es_CR.js | 1 + l10n/es_CR.json | 1 + l10n/es_DO.js | 1 + l10n/es_DO.json | 1 + l10n/es_EC.js | 2 ++ l10n/es_EC.json | 2 ++ l10n/es_GT.js | 1 + l10n/es_GT.json | 1 + l10n/es_HN.js | 1 + l10n/es_HN.json | 1 + l10n/es_MX.js | 2 ++ l10n/es_MX.json | 2 ++ l10n/es_NI.js | 1 + l10n/es_NI.json | 1 + l10n/es_PA.js | 1 + l10n/es_PA.json | 1 + l10n/es_PE.js | 1 + l10n/es_PE.json | 1 + l10n/es_PR.js | 1 + l10n/es_PR.json | 1 + l10n/es_PY.js | 1 + l10n/es_PY.json | 1 + l10n/es_SV.js | 1 + l10n/es_SV.json | 1 + l10n/es_UY.js | 1 + l10n/es_UY.json | 1 + l10n/et_EE.js | 2 ++ l10n/et_EE.json | 2 ++ l10n/eu.js | 2 ++ l10n/eu.json | 2 ++ l10n/fa.js | 2 ++ l10n/fa.json | 2 ++ l10n/fi.js | 2 ++ l10n/fi.json | 2 ++ l10n/fr.js | 2 ++ l10n/fr.json | 2 ++ l10n/ga.js | 2 ++ l10n/ga.json | 2 ++ l10n/gl.js | 3 +++ l10n/gl.json | 3 +++ l10n/he.js | 2 ++ l10n/he.json | 2 ++ l10n/hr.js | 2 ++ l10n/hr.json | 2 ++ l10n/hu.js | 2 ++ l10n/hu.json | 2 ++ l10n/hy.js | 1 + l10n/hy.json | 1 + l10n/ia.js | 1 + l10n/ia.json | 1 + l10n/id.js | 2 ++ l10n/id.json | 2 ++ l10n/is.js | 2 ++ l10n/is.json | 2 ++ l10n/it.js | 2 ++ l10n/it.json | 2 ++ l10n/ja.js | 2 ++ l10n/ja.json | 2 ++ l10n/ka.js | 2 ++ l10n/ka.json | 2 ++ l10n/ka_GE.js | 1 + l10n/ka_GE.json | 1 + l10n/ko.js | 2 ++ l10n/ko.json | 2 ++ l10n/lb.js | 1 + l10n/lb.json | 1 + l10n/lt_LT.js | 2 ++ l10n/lt_LT.json | 2 ++ l10n/lv.js | 1 + l10n/lv.json | 1 + l10n/mk.js | 2 ++ l10n/mk.json | 2 ++ l10n/mn.js | 1 + l10n/mn.json | 1 + l10n/nb.js | 2 ++ l10n/nb.json | 2 ++ l10n/nl.js | 2 ++ l10n/nl.json | 2 ++ l10n/nn_NO.js | 1 + l10n/nn_NO.json | 1 + l10n/oc.js | 2 ++ l10n/oc.json | 2 ++ l10n/pl.js | 2 ++ l10n/pl.json | 2 ++ l10n/pt_BR.js | 2 ++ l10n/pt_BR.json | 2 ++ l10n/pt_PT.js | 2 ++ l10n/pt_PT.json | 2 ++ l10n/ro.js | 2 ++ l10n/ro.json | 2 ++ l10n/ru.js | 2 ++ l10n/ru.json | 2 ++ l10n/sc.js | 2 ++ l10n/sc.json | 2 ++ l10n/sk.js | 2 ++ l10n/sk.json | 2 ++ l10n/sl.js | 2 ++ l10n/sl.json | 2 ++ l10n/sq.js | 1 + l10n/sq.json | 1 + l10n/sr.js | 2 ++ l10n/sr.json | 2 ++ l10n/sv.js | 2 ++ l10n/sv.json | 2 ++ l10n/sw.js | 2 ++ l10n/sw.json | 2 ++ l10n/th.js | 1 + l10n/th.json | 1 + l10n/tr.js | 2 ++ l10n/tr.json | 2 ++ l10n/ug.js | 2 ++ l10n/ug.json | 2 ++ l10n/uk.js | 2 ++ l10n/uk.json | 2 ++ l10n/uz.js | 2 ++ l10n/uz.json | 2 ++ l10n/vi.js | 2 ++ l10n/vi.json | 2 ++ l10n/zh_CN.js | 2 ++ l10n/zh_CN.json | 2 ++ l10n/zh_HK.js | 2 ++ l10n/zh_HK.json | 2 ++ l10n/zh_TW.js | 2 ++ l10n/zh_TW.json | 2 ++ 156 files changed, 262 insertions(+) diff --git a/l10n/be.js b/l10n/be.js index ec5de9bd7f..e693248bf7 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -42,6 +42,7 @@ OC.L10N.register( "Sign" : "Знак", "Confirm" : "Пацвердзіць", "Open file" : "Адкрыць файл", + "pending" : "у чаканні", "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", "Type" : "Тып", @@ -88,6 +89,7 @@ OC.L10N.register( "Message" : "Паведамленне", "Resource" : "Рэсурс", "Dependencies" : "Залежнасці", + "Reminders" : "Напаміны", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/be.json b/l10n/be.json index d8b8a7699a..e880ef8fc8 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -40,6 +40,7 @@ "Sign" : "Знак", "Confirm" : "Пацвердзіць", "Open file" : "Адкрыць файл", + "pending" : "у чаканні", "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", "Type" : "Тып", @@ -86,6 +87,7 @@ "Message" : "Паведамленне", "Resource" : "Рэсурс", "Dependencies" : "Залежнасці", + "Reminders" : "Напаміны", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/bg.js b/l10n/bg.js index ada923624d..3de0eb5d53 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -243,6 +243,7 @@ OC.L10N.register( "Legal information" : "Правна информация", "This information will appear on the validation page" : "Тази информация ще се появи на страницата за проверка", "Legal Information" : "Правна информация", + "Reminders" : "Напомняния", "To generate new signatures, you must first generate the root certificate." : "За да генерирате нови подписи, първо трябва да генерирате основния сертификат.", "Generating certificate." : "Генериране на сертификат.", "Could not generate certificate." : "Неуспешно генериране на сертификат.", diff --git a/l10n/bg.json b/l10n/bg.json index f3de29c1b1..29a0235395 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -241,6 +241,7 @@ "Legal information" : "Правна информация", "This information will appear on the validation page" : "Тази информация ще се появи на страницата за проверка", "Legal Information" : "Правна информация", + "Reminders" : "Напомняния", "To generate new signatures, you must first generate the root certificate." : "За да генерирате нови подписи, първо трябва да генерирате основния сертификат.", "Generating certificate." : "Генериране на сертификат.", "Could not generate certificate." : "Неуспешно генериране на сертификат.", diff --git a/l10n/ca.js b/l10n/ca.js index 36b97df304..7a62b5e246 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -256,6 +256,8 @@ OC.L10N.register( "Legal information" : "Informació legal", "This information will appear on the validation page" : "Aquesta informació apareixerà a la pàgina de validació", "Legal Information" : "Informació legal", + "Reminders" : "Recordatoris", + "on" : "a", "To generate new signatures, you must first generate the root certificate." : "Per generar noves signatures, primer heu de generar el certificat arrel.", "Generating certificate." : "S’estan generant el certificat.", "Could not generate certificate." : "No s'ha pogut generar el certificat.", diff --git a/l10n/ca.json b/l10n/ca.json index 0706f96070..305bb8fd49 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -254,6 +254,8 @@ "Legal information" : "Informació legal", "This information will appear on the validation page" : "Aquesta informació apareixerà a la pàgina de validació", "Legal Information" : "Informació legal", + "Reminders" : "Recordatoris", + "on" : "a", "To generate new signatures, you must first generate the root certificate." : "Per generar noves signatures, primer heu de generar el certificat arrel.", "Generating certificate." : "S’estan generant el certificat.", "Could not generate certificate." : "No s'ha pogut generar el certificat.", diff --git a/l10n/cs.js b/l10n/cs.js index f6fac2ff43..4408d0e926 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -374,6 +374,8 @@ OC.L10N.register( "Legal information" : "Právní informace", "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", + "Reminders" : "Připomínky", + "on" : "v", "Root certificate data" : "Data kořenového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pro vytváření nových podpisů je třeba nejprve vytvořit kořenový certifikát.", "Generate root certificate" : "Vytvořit kořenový certifikát", diff --git a/l10n/cs.json b/l10n/cs.json index 20e1ec8e90..a2adffc988 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -372,6 +372,8 @@ "Legal information" : "Právní informace", "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", + "Reminders" : "Připomínky", + "on" : "v", "Root certificate data" : "Data kořenového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pro vytváření nových podpisů je třeba nejprve vytvořit kořenový certifikát.", "Generate root certificate" : "Vytvořit kořenový certifikát", diff --git a/l10n/cy_GB.js b/l10n/cy_GB.js index 7c863cfc66..009f30b0b6 100644 --- a/l10n/cy_GB.js +++ b/l10n/cy_GB.js @@ -40,6 +40,8 @@ OC.L10N.register( "New password" : "Cyfrinair newydd", "Resource" : "Adnodd", "Dependencies" : "Dibyniaethau", + "Reminders" : "Nodau atgoffa", + "on" : "ar", "Yes" : "Iawn", "No" : "No", "Forgot password?" : "Anghofio cyfrinair?", diff --git a/l10n/cy_GB.json b/l10n/cy_GB.json index a245879791..2f68b44cdb 100644 --- a/l10n/cy_GB.json +++ b/l10n/cy_GB.json @@ -38,6 +38,8 @@ "New password" : "Cyfrinair newydd", "Resource" : "Adnodd", "Dependencies" : "Dibyniaethau", + "Reminders" : "Nodau atgoffa", + "on" : "ar", "Yes" : "Iawn", "No" : "No", "Forgot password?" : "Anghofio cyfrinair?", diff --git a/l10n/da.js b/l10n/da.js index ff47686d41..50d3cc7ad2 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -94,6 +94,8 @@ OC.L10N.register( "Message" : "Besked", "Resource" : "Ressource", "Dependencies" : "Afhængigheder", + "Reminders" : "Påmindelser", + "on" : "på", "Yes" : "Ja", "No" : "Nej", "Reset to default" : "Nulstil", diff --git a/l10n/da.json b/l10n/da.json index a15d54620c..0053b22b99 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -92,6 +92,8 @@ "Message" : "Besked", "Resource" : "Ressource", "Dependencies" : "Afhængigheder", + "Reminders" : "Påmindelser", + "on" : "på", "Yes" : "Ja", "No" : "Nej", "Reset to default" : "Nulstil", diff --git a/l10n/de.js b/l10n/de.js index ffb31e96eb..8834aee4c2 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Rechtliche Informationen", "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", + "Reminders" : "Erinnerungen", + "on" : "am", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erzeugen, musst du zunächst das Stammzertifikat erzeugen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de.json b/l10n/de.json index 1712d7afb5..900c0fd3ba 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -375,6 +375,8 @@ "Legal information" : "Rechtliche Informationen", "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", + "Reminders" : "Erinnerungen", + "on" : "am", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erzeugen, musst du zunächst das Stammzertifikat erzeugen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index ecc2e31c36..cb7a4977fb 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Rechtliche Informationen", "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", + "Reminders" : "Erinnerungen", + "on" : "am", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erstellen, müssen Sie zunächst ein Root-Zertifikat erstellen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 101dd989c8..1da7504966 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -375,6 +375,8 @@ "Legal information" : "Rechtliche Informationen", "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", + "Reminders" : "Erinnerungen", + "on" : "am", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erstellen, müssen Sie zunächst ein Root-Zertifikat erstellen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/el.js b/l10n/el.js index d96affef2c..e0aa9eeb77 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -114,6 +114,8 @@ OC.L10N.register( "Message" : "Μήνυμα", "Resource" : "Πόρος", "Dependencies" : "Εξαρτήσεις", + "Reminders" : "Υπενθυμίσεις", + "on" : "σε", "CFSSL API URI" : "CFSSL API URI", "Yes" : "Ναι", "No" : "Όχι", diff --git a/l10n/el.json b/l10n/el.json index cb860ebaa7..9ac489d9b0 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -112,6 +112,8 @@ "Message" : "Μήνυμα", "Resource" : "Πόρος", "Dependencies" : "Εξαρτήσεις", + "Reminders" : "Υπενθυμίσεις", + "on" : "σε", "CFSSL API URI" : "CFSSL API URI", "Yes" : "Ναι", "No" : "Όχι", diff --git a/l10n/en_GB.js b/l10n/en_GB.js index f92730947e..55ae893a50 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Legal information", "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", + "Reminders" : "Reminders", + "on" : "on", "Root certificate data" : "Root certificate data", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generate root certificate" : "Generate root certificate", diff --git a/l10n/en_GB.json b/l10n/en_GB.json index 4b34d9fcb5..4da3652820 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -375,6 +375,8 @@ "Legal information" : "Legal information", "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", + "Reminders" : "Reminders", + "on" : "on", "Root certificate data" : "Root certificate data", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generate root certificate" : "Generate root certificate", diff --git a/l10n/eo.js b/l10n/eo.js index d41a77d4fa..b4a5197640 100644 --- a/l10n/eo.js +++ b/l10n/eo.js @@ -70,6 +70,7 @@ OC.L10N.register( "Message" : "Mesaĝo", "Resource" : "Risurco", "Dependencies" : "Dependecoj", + "Reminders" : "Memorigoj", "Yes" : "Yes", "No" : "No", "Reset to default" : "Restarigi al defaŭltaj agordoj", diff --git a/l10n/eo.json b/l10n/eo.json index d7127fe7a0..36b5652a80 100644 --- a/l10n/eo.json +++ b/l10n/eo.json @@ -68,6 +68,7 @@ "Message" : "Mesaĝo", "Resource" : "Risurco", "Dependencies" : "Dependecoj", + "Reminders" : "Memorigoj", "Yes" : "Yes", "No" : "No", "Reset to default" : "Restarigi al defaŭltaj agordoj", diff --git a/l10n/es.js b/l10n/es.js index 5be9a94201..6fc4e20c27 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información Legal", + "Reminders" : "Recordatorios", + "on" : "activo", "Root certificate data" : "Datos del certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes crear un certificado raíz.", "Generate root certificate" : "Generar certificado raíz", diff --git a/l10n/es.json b/l10n/es.json index b4b6d80a3c..dc1ce28da3 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -375,6 +375,8 @@ "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información Legal", + "Reminders" : "Recordatorios", + "on" : "activo", "Root certificate data" : "Datos del certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes crear un certificado raíz.", "Generate root certificate" : "Generar certificado raíz", diff --git a/l10n/es_419.js b/l10n/es_419.js index 17d42f18a3..164ece7009 100644 --- a/l10n/es_419.js +++ b/l10n/es_419.js @@ -79,6 +79,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_419.json b/l10n/es_419.json index f4260cb8e8..8989a77cac 100644 --- a/l10n/es_419.json +++ b/l10n/es_419.json @@ -77,6 +77,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_AR.js b/l10n/es_AR.js index e8d24bf33d..76c1a272fd 100644 --- a/l10n/es_AR.js +++ b/l10n/es_AR.js @@ -67,6 +67,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Si", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_AR.json b/l10n/es_AR.json index d2308bbd9f..6edbbd5526 100644 --- a/l10n/es_AR.json +++ b/l10n/es_AR.json @@ -65,6 +65,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Si", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CL.js b/l10n/es_CL.js index 236880b095..d27ea4cd30 100644 --- a/l10n/es_CL.js +++ b/l10n/es_CL.js @@ -61,6 +61,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CL.json b/l10n/es_CL.json index bcb04c80ca..05f8645834 100644 --- a/l10n/es_CL.json +++ b/l10n/es_CL.json @@ -59,6 +59,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CO.js b/l10n/es_CO.js index 5fa3cff34a..24c04a62d3 100644 --- a/l10n/es_CO.js +++ b/l10n/es_CO.js @@ -63,6 +63,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CO.json b/l10n/es_CO.json index bbf9eb7bf4..a744b53178 100644 --- a/l10n/es_CO.json +++ b/l10n/es_CO.json @@ -61,6 +61,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CR.js b/l10n/es_CR.js index 2d9cb7636a..fbc1036108 100644 --- a/l10n/es_CR.js +++ b/l10n/es_CR.js @@ -60,6 +60,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_CR.json b/l10n/es_CR.json index a07b5ad043..62c65f47d6 100644 --- a/l10n/es_CR.json +++ b/l10n/es_CR.json @@ -58,6 +58,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_DO.js b/l10n/es_DO.js index 2d9cb7636a..fbc1036108 100644 --- a/l10n/es_DO.js +++ b/l10n/es_DO.js @@ -60,6 +60,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_DO.json b/l10n/es_DO.json index a07b5ad043..62c65f47d6 100644 --- a/l10n/es_DO.json +++ b/l10n/es_DO.json @@ -58,6 +58,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_EC.js b/l10n/es_EC.js index 2ce7ca17dd..37f0833fcc 100644 --- a/l10n/es_EC.js +++ b/l10n/es_EC.js @@ -234,6 +234,8 @@ OC.L10N.register( "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información legal", + "Reminders" : "Recordatorios", + "on" : "el", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes generar el certificado raíz.", "Generating certificate." : "Generando certificado", "Could not generate certificate." : "No se pudo generar el certificado", diff --git a/l10n/es_EC.json b/l10n/es_EC.json index 9e65998425..3c8e6d5b97 100644 --- a/l10n/es_EC.json +++ b/l10n/es_EC.json @@ -232,6 +232,8 @@ "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información legal", + "Reminders" : "Recordatorios", + "on" : "el", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes generar el certificado raíz.", "Generating certificate." : "Generando certificado", "Could not generate certificate." : "No se pudo generar el certificado", diff --git a/l10n/es_GT.js b/l10n/es_GT.js index 2d9cb7636a..fbc1036108 100644 --- a/l10n/es_GT.js +++ b/l10n/es_GT.js @@ -60,6 +60,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_GT.json b/l10n/es_GT.json index a07b5ad043..62c65f47d6 100644 --- a/l10n/es_GT.json +++ b/l10n/es_GT.json @@ -58,6 +58,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_HN.js b/l10n/es_HN.js index c19f69310b..ca9b73acc8 100644 --- a/l10n/es_HN.js +++ b/l10n/es_HN.js @@ -54,6 +54,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_HN.json b/l10n/es_HN.json index f028b008e3..4b80fb7e80 100644 --- a/l10n/es_HN.json +++ b/l10n/es_HN.json @@ -52,6 +52,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_MX.js b/l10n/es_MX.js index cae14a471b..8cca66bb4d 100644 --- a/l10n/es_MX.js +++ b/l10n/es_MX.js @@ -89,6 +89,8 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", + "on" : "el", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_MX.json b/l10n/es_MX.json index f1492cdf75..19037111a2 100644 --- a/l10n/es_MX.json +++ b/l10n/es_MX.json @@ -87,6 +87,8 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", + "on" : "el", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_NI.js b/l10n/es_NI.js index 02f5ddc3e3..096eb36d43 100644 --- a/l10n/es_NI.js +++ b/l10n/es_NI.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_NI.json b/l10n/es_NI.json index 47b28059ba..c69091c14d 100644 --- a/l10n/es_NI.json +++ b/l10n/es_NI.json @@ -53,6 +53,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PA.js b/l10n/es_PA.js index 02f5ddc3e3..096eb36d43 100644 --- a/l10n/es_PA.js +++ b/l10n/es_PA.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PA.json b/l10n/es_PA.json index 47b28059ba..c69091c14d 100644 --- a/l10n/es_PA.json +++ b/l10n/es_PA.json @@ -53,6 +53,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PE.js b/l10n/es_PE.js index 05fa618c4e..734a387f42 100644 --- a/l10n/es_PE.js +++ b/l10n/es_PE.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PE.json b/l10n/es_PE.json index 207bf59e70..0ed3e2c6c6 100644 --- a/l10n/es_PE.json +++ b/l10n/es_PE.json @@ -53,6 +53,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PR.js b/l10n/es_PR.js index 02f5ddc3e3..096eb36d43 100644 --- a/l10n/es_PR.js +++ b/l10n/es_PR.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PR.json b/l10n/es_PR.json index 47b28059ba..c69091c14d 100644 --- a/l10n/es_PR.json +++ b/l10n/es_PR.json @@ -53,6 +53,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PY.js b/l10n/es_PY.js index 8e671b1bb8..1315d49271 100644 --- a/l10n/es_PY.js +++ b/l10n/es_PY.js @@ -56,6 +56,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_PY.json b/l10n/es_PY.json index bece0c91ad..4c18ebb26b 100644 --- a/l10n/es_PY.json +++ b/l10n/es_PY.json @@ -54,6 +54,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_SV.js b/l10n/es_SV.js index 2d9cb7636a..fbc1036108 100644 --- a/l10n/es_SV.js +++ b/l10n/es_SV.js @@ -60,6 +60,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_SV.json b/l10n/es_SV.json index a07b5ad043..62c65f47d6 100644 --- a/l10n/es_SV.json +++ b/l10n/es_SV.json @@ -58,6 +58,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_UY.js b/l10n/es_UY.js index 02f5ddc3e3..096eb36d43 100644 --- a/l10n/es_UY.js +++ b/l10n/es_UY.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/es_UY.json b/l10n/es_UY.json index 47b28059ba..c69091c14d 100644 --- a/l10n/es_UY.json +++ b/l10n/es_UY.json @@ -53,6 +53,7 @@ "Message" : "Mensaje", "Resource" : "Recurso", "Dependencies" : "Dependencias", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "No", "Reset to default" : "Restablecer al predeterminado", diff --git a/l10n/et_EE.js b/l10n/et_EE.js index 623dea7946..ae53c038ce 100644 --- a/l10n/et_EE.js +++ b/l10n/et_EE.js @@ -203,6 +203,8 @@ OC.L10N.register( "Resource" : "Ressurss", "Dependencies" : "Sõltuvused", "Legal information" : "Juriidiline teave", + "Reminders" : "Meelespead", + "on" : "ajal", "Yes" : "Jah", "No" : "Ei", "Include certificate policy" : "Kaasa sertifikaadireeglid", diff --git a/l10n/et_EE.json b/l10n/et_EE.json index 83e7c378f5..245208fbeb 100644 --- a/l10n/et_EE.json +++ b/l10n/et_EE.json @@ -201,6 +201,8 @@ "Resource" : "Ressurss", "Dependencies" : "Sõltuvused", "Legal information" : "Juriidiline teave", + "Reminders" : "Meelespead", + "on" : "ajal", "Yes" : "Jah", "No" : "Ei", "Include certificate policy" : "Kaasa sertifikaadireeglid", diff --git a/l10n/eu.js b/l10n/eu.js index 7df4aa43b7..6bd1a59c48 100644 --- a/l10n/eu.js +++ b/l10n/eu.js @@ -267,6 +267,8 @@ OC.L10N.register( "Legal information" : "Informazio legala", "This information will appear on the validation page" : "Informazio hau balidazio orrian agertuko da", "Legal Information" : "Informazio legala", + "Reminders" : "Gogorarazpenak", + "on" : "noiz", "To generate new signatures, you must first generate the root certificate." : "Sinadura berriak sortzeko, lehenik root ziurtagiria sortu behar duzu.", "Generating certificate." : "Ziurtagiria sortzen.", "Could not generate certificate." : "Ezin izan da ziurtagiria sortu.", diff --git a/l10n/eu.json b/l10n/eu.json index eb1617c76e..ba8d073c06 100644 --- a/l10n/eu.json +++ b/l10n/eu.json @@ -265,6 +265,8 @@ "Legal information" : "Informazio legala", "This information will appear on the validation page" : "Informazio hau balidazio orrian agertuko da", "Legal Information" : "Informazio legala", + "Reminders" : "Gogorarazpenak", + "on" : "noiz", "To generate new signatures, you must first generate the root certificate." : "Sinadura berriak sortzeko, lehenik root ziurtagiria sortu behar duzu.", "Generating certificate." : "Ziurtagiria sortzen.", "Could not generate certificate." : "Ezin izan da ziurtagiria sortu.", diff --git a/l10n/fa.js b/l10n/fa.js index a0bf718e89..79968fefe9 100644 --- a/l10n/fa.js +++ b/l10n/fa.js @@ -244,6 +244,8 @@ OC.L10N.register( "Legal information" : "Legal information", "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", + "Reminders" : "یادآوری ها", + "on" : "بر", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generating certificate." : "Generating certificate.", "Could not generate certificate." : "Could not generate certificate.", diff --git a/l10n/fa.json b/l10n/fa.json index 6b29400afd..05c4081fef 100644 --- a/l10n/fa.json +++ b/l10n/fa.json @@ -242,6 +242,8 @@ "Legal information" : "Legal information", "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", + "Reminders" : "یادآوری ها", + "on" : "بر", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generating certificate." : "Generating certificate.", "Could not generate certificate." : "Could not generate certificate.", diff --git a/l10n/fi.js b/l10n/fi.js index 9b8b993e39..3645a0d011 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -176,6 +176,8 @@ OC.L10N.register( "Dependencies" : "Riippuvuudet", "This information will appear on the validation page" : "Tämä tieto näkyy validointisivulla", "Legal Information" : "Lainopilliset tiedot", + "Reminders" : "Muistutukset", + "on" : "päivä", "Generating certificate." : "Luodaan varmennetta.", "Could not generate certificate." : "Varmennetta ei voitu luoda.", "Generated certificate!" : "Varmenne luotu!", diff --git a/l10n/fi.json b/l10n/fi.json index 046ffc4944..8cfb894fe9 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -174,6 +174,8 @@ "Dependencies" : "Riippuvuudet", "This information will appear on the validation page" : "Tämä tieto näkyy validointisivulla", "Legal Information" : "Lainopilliset tiedot", + "Reminders" : "Muistutukset", + "on" : "päivä", "Generating certificate." : "Luodaan varmennetta.", "Could not generate certificate." : "Varmennetta ei voitu luoda.", "Generated certificate!" : "Varmenne luotu!", diff --git a/l10n/fr.js b/l10n/fr.js index 3f324b77d7..cb671cdbe2 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Informations légales", "This information will appear on the validation page" : "Cette information apparaîtra sur la page de validation", "Legal Information" : "Informations légales", + "Reminders" : "Rappels", + "on" : "le", "Root certificate data" : "Données du certificat principal", "To generate new signatures, you must first generate the root certificate." : "Pour générer de nouvelles signatures, vous devez d'abord générer le certificat racine.", "Generate root certificate" : "Générer un certificat racine", diff --git a/l10n/fr.json b/l10n/fr.json index 518a80cbd4..2e18c8ea60 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -375,6 +375,8 @@ "Legal information" : "Informations légales", "This information will appear on the validation page" : "Cette information apparaîtra sur la page de validation", "Legal Information" : "Informations légales", + "Reminders" : "Rappels", + "on" : "le", "Root certificate data" : "Données du certificat principal", "To generate new signatures, you must first generate the root certificate." : "Pour générer de nouvelles signatures, vous devez d'abord générer le certificat racine.", "Generate root certificate" : "Générer un certificat racine", diff --git a/l10n/ga.js b/l10n/ga.js index 3c4838136f..37df58acc3 100644 --- a/l10n/ga.js +++ b/l10n/ga.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Eolas dlíthiúil", "This information will appear on the validation page" : "Beidh an fhaisnéis seo le feiceáil ar an leathanach bailíochtaithe", "Legal Information" : "Eolas Dlí", + "Reminders" : "Meabhrúcháin", + "on" : "ar", "Root certificate data" : "Sonraí deimhnithe root", "To generate new signatures, you must first generate the root certificate." : "Chun sínithe nua a ghiniúint, ní mór duit an teastas fréimhe a ghiniúint ar dtús.", "Generate root certificate" : "Gin teastas fréimhe", diff --git a/l10n/ga.json b/l10n/ga.json index 10a40625f8..5e3e3765dd 100644 --- a/l10n/ga.json +++ b/l10n/ga.json @@ -375,6 +375,8 @@ "Legal information" : "Eolas dlíthiúil", "This information will appear on the validation page" : "Beidh an fhaisnéis seo le feiceáil ar an leathanach bailíochtaithe", "Legal Information" : "Eolas Dlí", + "Reminders" : "Meabhrúcháin", + "on" : "ar", "Root certificate data" : "Sonraí deimhnithe root", "To generate new signatures, you must first generate the root certificate." : "Chun sínithe nua a ghiniúint, ní mór duit an teastas fréimhe a ghiniúint ar dtús.", "Generate root certificate" : "Gin teastas fréimhe", diff --git a/l10n/gl.js b/l10n/gl.js index a5520523af..d181e569bf 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -339,6 +339,8 @@ OC.L10N.register( "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", + "Reminders" : "Lembretes", + "on" : "o", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", @@ -353,6 +355,7 @@ OC.L10N.register( "No" : "Non", "Full name of the main company or main user of this instance" : "Nome completo da empresa principal ou usuario principal desta instancia", "Define custom values to use {engine}" : "Defina os valores personalizados para usar {engine}", + "Not mandatory, leave blank to use the default value." : "Non é obrigatorio, déixeo baleiro para usar o valor predeterminado.", "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", "Reset to default" : "Restabelecer os valores predeterminados", diff --git a/l10n/gl.json b/l10n/gl.json index ccae59904e..120a73e111 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -337,6 +337,8 @@ "Legal information" : "Información legal", "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", + "Reminders" : "Lembretes", + "on" : "o", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", @@ -351,6 +353,7 @@ "No" : "Non", "Full name of the main company or main user of this instance" : "Nome completo da empresa principal ou usuario principal desta instancia", "Define custom values to use {engine}" : "Defina os valores personalizados para usar {engine}", + "Not mandatory, leave blank to use the default value." : "Non é obrigatorio, déixeo baleiro para usar o valor predeterminado.", "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", "Reset to default" : "Restabelecer os valores predeterminados", diff --git a/l10n/he.js b/l10n/he.js index 776f408a03..03f09295cd 100644 --- a/l10n/he.js +++ b/l10n/he.js @@ -73,6 +73,8 @@ OC.L10N.register( "Message" : "הודעה", "Resource" : "משאב", "Dependencies" : "תלויות", + "Reminders" : "תזכורות", + "on" : "על", "Yes" : "כן", "No" : "לא", "Reset to default" : "איפוס לבררת מחדל", diff --git a/l10n/he.json b/l10n/he.json index 62fda423f7..9b6e86b498 100644 --- a/l10n/he.json +++ b/l10n/he.json @@ -71,6 +71,8 @@ "Message" : "הודעה", "Resource" : "משאב", "Dependencies" : "תלויות", + "Reminders" : "תזכורות", + "on" : "על", "Yes" : "כן", "No" : "לא", "Reset to default" : "איפוס לבררת מחדל", diff --git a/l10n/hr.js b/l10n/hr.js index 78c86bcba5..8a84ac4494 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -184,6 +184,8 @@ OC.L10N.register( "Legal information" : "Pravne informacije", "This information will appear on the validation page" : "Ove će se informacije prikazati na stranici za potvrdu valjanosti", "Legal Information" : "Pravne informacije", + "Reminders" : "Podsjetnici", + "on" : "na", "To generate new signatures, you must first generate the root certificate." : "Kako biste generirali nove potpise, prvo morate generirati korijensku vjerodajnicu.", "Generating certificate." : "Generiranje vjerodajnice.", "Could not generate certificate." : "Generiranje vjerodajnice nije uspjelo.", diff --git a/l10n/hr.json b/l10n/hr.json index 7774385602..59c3efe061 100644 --- a/l10n/hr.json +++ b/l10n/hr.json @@ -182,6 +182,8 @@ "Legal information" : "Pravne informacije", "This information will appear on the validation page" : "Ove će se informacije prikazati na stranici za potvrdu valjanosti", "Legal Information" : "Pravne informacije", + "Reminders" : "Podsjetnici", + "on" : "na", "To generate new signatures, you must first generate the root certificate." : "Kako biste generirali nove potpise, prvo morate generirati korijensku vjerodajnicu.", "Generating certificate." : "Generiranje vjerodajnice.", "Could not generate certificate." : "Generiranje vjerodajnice nije uspjelo.", diff --git a/l10n/hu.js b/l10n/hu.js index 16c6092ff1..e0354cd23a 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -264,6 +264,8 @@ OC.L10N.register( "Legal information" : "Jogi információk", "This information will appear on the validation page" : "Ez az információ csak az ellenőrzési oldalon jelenik meg", "Legal Information" : "Jogi információk", + "Reminders" : "Emlékeztetők", + "on" : "be", "To generate new signatures, you must first generate the root certificate." : "Új aláírások létrehozásához először elő kell állítania a gyökértanúsítványt.", "Generating certificate." : "Tanúsítvány előállítása.", "Could not generate certificate." : "Nem sikerült létrehozni a tanúsítványt.", diff --git a/l10n/hu.json b/l10n/hu.json index 560aba4a80..67675f0959 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -262,6 +262,8 @@ "Legal information" : "Jogi információk", "This information will appear on the validation page" : "Ez az információ csak az ellenőrzési oldalon jelenik meg", "Legal Information" : "Jogi információk", + "Reminders" : "Emlékeztetők", + "on" : "be", "To generate new signatures, you must first generate the root certificate." : "Új aláírások létrehozásához először elő kell állítania a gyökértanúsítványt.", "Generating certificate." : "Tanúsítvány előállítása.", "Could not generate certificate." : "Nem sikerült létrehozni a tanúsítványt.", diff --git a/l10n/hy.js b/l10n/hy.js index 6f3d2458bc..ab62e16b83 100644 --- a/l10n/hy.js +++ b/l10n/hy.js @@ -37,6 +37,7 @@ OC.L10N.register( "Password reset" : "Վերականգնել գաղտնաբառը", "New password" : "Նոր գաղտնաբառ", "Resource" : "Ռեսուրս", + "Reminders" : "Հիշեցումներ", "Yes" : "Yes", "No" : "No", "Forgot password?" : "Մոռացե՞լ եք գաղտնաբառը։", diff --git a/l10n/hy.json b/l10n/hy.json index 93a64eea80..86257c035c 100644 --- a/l10n/hy.json +++ b/l10n/hy.json @@ -35,6 +35,7 @@ "Password reset" : "Վերականգնել գաղտնաբառը", "New password" : "Նոր գաղտնաբառ", "Resource" : "Ռեսուրս", + "Reminders" : "Հիշեցումներ", "Yes" : "Yes", "No" : "No", "Forgot password?" : "Մոռացե՞լ եք գաղտնաբառը։", diff --git a/l10n/ia.js b/l10n/ia.js index 77657c8ef7..f1b65b5692 100644 --- a/l10n/ia.js +++ b/l10n/ia.js @@ -33,6 +33,7 @@ OC.L10N.register( "Current password" : "Contrasigno actual", "New password" : "Nove contrasigno", "Resource" : "Ressource", + "Reminders" : "Memento", "Yes" : "Si", "No" : "No", "No date" : "No date" diff --git a/l10n/ia.json b/l10n/ia.json index 407f22e054..3870d39d3a 100644 --- a/l10n/ia.json +++ b/l10n/ia.json @@ -31,6 +31,7 @@ "Current password" : "Contrasigno actual", "New password" : "Nove contrasigno", "Resource" : "Ressource", + "Reminders" : "Memento", "Yes" : "Si", "No" : "No", "No date" : "No date" diff --git a/l10n/id.js b/l10n/id.js index 30e6c5098b..42dfaeceed 100644 --- a/l10n/id.js +++ b/l10n/id.js @@ -96,6 +96,8 @@ OC.L10N.register( "Remove" : "Hapus", "Message" : "Pesan", "Dependencies" : "Ketergantungan", + "Reminders" : "Pengingat", + "on" : "pada", "Yes" : "Ya", "No" : "Tidak", "No date" : "No date" diff --git a/l10n/id.json b/l10n/id.json index dc5e208c37..0b21df13ae 100644 --- a/l10n/id.json +++ b/l10n/id.json @@ -94,6 +94,8 @@ "Remove" : "Hapus", "Message" : "Pesan", "Dependencies" : "Ketergantungan", + "Reminders" : "Pengingat", + "on" : "pada", "Yes" : "Ya", "No" : "Tidak", "No date" : "No date" diff --git a/l10n/is.js b/l10n/is.js index 3bfaca653b..b5eb365ad6 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -92,6 +92,8 @@ OC.L10N.register( "Message" : "Skilaboð", "Resource" : "Tilfang", "Dependencies" : "Kerfiskröfur", + "Reminders" : "Áminningar", + "on" : "þann", "Yes" : "Já", "No" : "Nei", "Reset to default" : "Endurstilla á sjálfgefið", diff --git a/l10n/is.json b/l10n/is.json index f823dbc031..4605e1f262 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -90,6 +90,8 @@ "Message" : "Skilaboð", "Resource" : "Tilfang", "Dependencies" : "Kerfiskröfur", + "Reminders" : "Áminningar", + "on" : "þann", "Yes" : "Já", "No" : "Nei", "Reset to default" : "Endurstilla á sjálfgefið", diff --git a/l10n/it.js b/l10n/it.js index b951f596ed..a8d0c8a10a 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Informazioni legali", "This information will appear on the validation page" : "Queste informazioni appariranno nella pagina di convalida", "Legal Information" : "Informazioni legali", + "Reminders" : "Promemoria", + "on" : "il", "Root certificate data" : "Dati certificato root", "To generate new signatures, you must first generate the root certificate." : "Per generare nuove firme, devi prima generare il certificato radice.", "Generate root certificate" : "Genera certificato root", diff --git a/l10n/it.json b/l10n/it.json index 0d22684a8d..fb794a734a 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -375,6 +375,8 @@ "Legal information" : "Informazioni legali", "This information will appear on the validation page" : "Queste informazioni appariranno nella pagina di convalida", "Legal Information" : "Informazioni legali", + "Reminders" : "Promemoria", + "on" : "il", "Root certificate data" : "Dati certificato root", "To generate new signatures, you must first generate the root certificate." : "Per generare nuove firme, devi prima generare il certificato radice.", "Generate root certificate" : "Genera certificato root", diff --git a/l10n/ja.js b/l10n/ja.js index 66e723428d..49265051cc 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -104,6 +104,8 @@ OC.L10N.register( "Message" : "メッセージ", "Resource" : "リソース", "Dependencies" : "依存関係", + "Reminders" : "リマインダー", + "on" : "曜日", "Yes" : "はい", "No" : "いいえ", "Reset to default" : "デフォルトに戻す", diff --git a/l10n/ja.json b/l10n/ja.json index 5090e57b66..6f9c27689d 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -102,6 +102,8 @@ "Message" : "メッセージ", "Resource" : "リソース", "Dependencies" : "依存関係", + "Reminders" : "リマインダー", + "on" : "曜日", "Yes" : "はい", "No" : "いいえ", "Reset to default" : "デフォルトに戻す", diff --git a/l10n/ka.js b/l10n/ka.js index adf7a8a9d4..c09d6b82ae 100644 --- a/l10n/ka.js +++ b/l10n/ka.js @@ -81,6 +81,8 @@ OC.L10N.register( "Remove" : "Remove", "Message" : "Message", "Dependencies" : "Dependencies", + "Reminders" : "Reminders", + "on" : "on", "Yes" : "Yes", "No" : "No", "Reset to default" : "Reset to default", diff --git a/l10n/ka.json b/l10n/ka.json index 1d83eed6c2..b5c742b90a 100644 --- a/l10n/ka.json +++ b/l10n/ka.json @@ -79,6 +79,8 @@ "Remove" : "Remove", "Message" : "Message", "Dependencies" : "Dependencies", + "Reminders" : "Reminders", + "on" : "on", "Yes" : "Yes", "No" : "No", "Reset to default" : "Reset to default", diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js index 1d9bf13093..3c83f987ca 100644 --- a/l10n/ka_GE.js +++ b/l10n/ka_GE.js @@ -55,6 +55,7 @@ OC.L10N.register( "Message" : "წერილი", "Resource" : "რესურსი", "Dependencies" : "დამოკიდებულებები", + "Reminders" : "შემახსენებლები", "Yes" : "კი", "No" : "არა", "Reset to default" : "საწყის მდგომარეობაში დაბრუნება", diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json index a89c1244cc..ffbeb82021 100644 --- a/l10n/ka_GE.json +++ b/l10n/ka_GE.json @@ -53,6 +53,7 @@ "Message" : "წერილი", "Resource" : "რესურსი", "Dependencies" : "დამოკიდებულებები", + "Reminders" : "შემახსენებლები", "Yes" : "კი", "No" : "არა", "Reset to default" : "საწყის მდგომარეობაში დაბრუნება", diff --git a/l10n/ko.js b/l10n/ko.js index 3b2cd262da..a200f6119e 100644 --- a/l10n/ko.js +++ b/l10n/ko.js @@ -211,6 +211,8 @@ OC.L10N.register( "Legal information" : "법률 정보", "This information will appear on the validation page" : "이 정보는 유효성 확인 페이지에 나타납니다.", "Legal Information" : "법률 정보", + "Reminders" : "알림", + "on" : "다음 시간/위치에: ", "To generate new signatures, you must first generate the root certificate." : "새 서명을 생성하려면 먼저 루트 인증서를 생성해야 합니다.", "Generating certificate." : "인증서를 생성하는 중입니다.", "Could not generate certificate." : "인증서를 생성할 수 없습니다.", diff --git a/l10n/ko.json b/l10n/ko.json index a99286e8f2..ccd7a2b47e 100644 --- a/l10n/ko.json +++ b/l10n/ko.json @@ -209,6 +209,8 @@ "Legal information" : "법률 정보", "This information will appear on the validation page" : "이 정보는 유효성 확인 페이지에 나타납니다.", "Legal Information" : "법률 정보", + "Reminders" : "알림", + "on" : "다음 시간/위치에: ", "To generate new signatures, you must first generate the root certificate." : "새 서명을 생성하려면 먼저 루트 인증서를 생성해야 합니다.", "Generating certificate." : "인증서를 생성하는 중입니다.", "Could not generate certificate." : "인증서를 생성할 수 없습니다.", diff --git a/l10n/lb.js b/l10n/lb.js index 6d58962f8c..0835f92fa6 100644 --- a/l10n/lb.js +++ b/l10n/lb.js @@ -32,6 +32,7 @@ OC.L10N.register( "Current password" : "Momentan 't Passwuert", "New password" : "Neit Passwuert", "Resource" : "Ressource", + "Reminders" : "Erennërungen", "Yes" : "Yes", "No" : "No", "No date" : "No date" diff --git a/l10n/lb.json b/l10n/lb.json index 04a30f6cd1..41e1b024fe 100644 --- a/l10n/lb.json +++ b/l10n/lb.json @@ -30,6 +30,7 @@ "Current password" : "Momentan 't Passwuert", "New password" : "Neit Passwuert", "Resource" : "Ressource", + "Reminders" : "Erennërungen", "Yes" : "Yes", "No" : "No", "No date" : "No date" diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js index 16f6ae4f5e..3f8fee7ecd 100644 --- a/l10n/lt_LT.js +++ b/l10n/lt_LT.js @@ -159,6 +159,8 @@ OC.L10N.register( "Dependencies" : "Priklausomybės", "Legal information" : "Teisinė informacija", "Legal Information" : "Teisinė informacija", + "Reminders" : "Priminimai", + "on" : "šiomis dienomis", "Yes" : "Taip", "No" : "Ne", "Reset to default" : "Atstatyti į numatytąjį", diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json index 7a2fd511f3..6fff3a0741 100644 --- a/l10n/lt_LT.json +++ b/l10n/lt_LT.json @@ -157,6 +157,8 @@ "Dependencies" : "Priklausomybės", "Legal information" : "Teisinė informacija", "Legal Information" : "Teisinė informacija", + "Reminders" : "Priminimai", + "on" : "šiomis dienomis", "Yes" : "Taip", "No" : "Ne", "Reset to default" : "Atstatyti į numatytąjį", diff --git a/l10n/lv.js b/l10n/lv.js index a70279e659..b54a239272 100644 --- a/l10n/lv.js +++ b/l10n/lv.js @@ -75,6 +75,7 @@ OC.L10N.register( "Message" : "Ziņojums", "Resource" : "Resurss", "Customize default user folder" : "Pielāgot noklusējuma lietotāja mapi", + "Reminders" : "Atgādinājumi", "Yes" : "Jā", "No" : "Nē", "Reset to default" : "Atiestatīt", diff --git a/l10n/lv.json b/l10n/lv.json index 6ce3a61822..0aaad2754f 100644 --- a/l10n/lv.json +++ b/l10n/lv.json @@ -73,6 +73,7 @@ "Message" : "Ziņojums", "Resource" : "Resurss", "Customize default user folder" : "Pielāgot noklusējuma lietotāja mapi", + "Reminders" : "Atgādinājumi", "Yes" : "Jā", "No" : "Nē", "Reset to default" : "Atiestatīt", diff --git a/l10n/mk.js b/l10n/mk.js index cb5807c1ca..c0c00437a8 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -94,6 +94,8 @@ OC.L10N.register( "Remove" : "Отстрани ", "Message" : "Порака", "Resource" : "Ресурси", + "Reminders" : "Потсетници", + "on" : "во", "Yes" : "Да", "No" : "Не", "Reset to default" : "Ресетирај на стандардно", diff --git a/l10n/mk.json b/l10n/mk.json index 2465b1afcc..3c00ee5122 100644 --- a/l10n/mk.json +++ b/l10n/mk.json @@ -92,6 +92,8 @@ "Remove" : "Отстрани ", "Message" : "Порака", "Resource" : "Ресурси", + "Reminders" : "Потсетници", + "on" : "во", "Yes" : "Да", "No" : "Не", "Reset to default" : "Ресетирај на стандардно", diff --git a/l10n/mn.js b/l10n/mn.js index cf2ac80d48..466e5e245c 100644 --- a/l10n/mn.js +++ b/l10n/mn.js @@ -43,6 +43,7 @@ OC.L10N.register( "Current password" : "одоогийн нууц үг", "New password" : "шинэ нууц үг", "Resource" : "Нөөц", + "Reminders" : "Сануулагууд", "Yes" : "Тийм", "No" : "Үгүй", "Reset to default" : "Анхны байдлаар сэргээх", diff --git a/l10n/mn.json b/l10n/mn.json index 707c8b37c1..05697e6659 100644 --- a/l10n/mn.json +++ b/l10n/mn.json @@ -41,6 +41,7 @@ "Current password" : "одоогийн нууц үг", "New password" : "шинэ нууц үг", "Resource" : "Нөөц", + "Reminders" : "Сануулагууд", "Yes" : "Тийм", "No" : "Үгүй", "Reset to default" : "Анхны байдлаар сэргээх", diff --git a/l10n/nb.js b/l10n/nb.js index 4df0a30baf..297b379fd5 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -311,6 +311,8 @@ OC.L10N.register( "Legal information" : "Juridisk informasjon", "This information will appear on the validation page" : "Denne informasjonen vises på valideringssiden", "Legal Information" : "Juridisk informasjon", + "Reminders" : "Varsler", + "on" : "på", "Root certificate data" : "Rotsertifikatdata", "To generate new signatures, you must first generate the root certificate." : "Hvis du vil generere nye signaturer, må du først generere rotsertifikatet.", "Generate root certificate" : "Generer rotsertifikat", diff --git a/l10n/nb.json b/l10n/nb.json index 5b5476b4d2..b603c5d9f1 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -309,6 +309,8 @@ "Legal information" : "Juridisk informasjon", "This information will appear on the validation page" : "Denne informasjonen vises på valideringssiden", "Legal Information" : "Juridisk informasjon", + "Reminders" : "Varsler", + "on" : "på", "Root certificate data" : "Rotsertifikatdata", "To generate new signatures, you must first generate the root certificate." : "Hvis du vil generere nye signaturer, må du først generere rotsertifikatet.", "Generate root certificate" : "Generer rotsertifikat", diff --git a/l10n/nl.js b/l10n/nl.js index d4760870ef..c734ed186c 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -221,6 +221,8 @@ OC.L10N.register( "Legal information" : "Juridische informatie", "This information will appear on the validation page" : "Deze informatie zal op de validatiepagina zichtbaar zijn", "Legal Information" : "Juridische Informatie", + "Reminders" : "Herinneringen", + "on" : "op", "To generate new signatures, you must first generate the root certificate." : "Om nieuwe handtekeningen te genereren, moet je eerst het rootcertificaat genereren.", "Generating certificate." : "Genereren certificaat.", "Could not generate certificate." : "Kon het certificaat niet genereren.", diff --git a/l10n/nl.json b/l10n/nl.json index a160da76e3..2c37808492 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -219,6 +219,8 @@ "Legal information" : "Juridische informatie", "This information will appear on the validation page" : "Deze informatie zal op de validatiepagina zichtbaar zijn", "Legal Information" : "Juridische Informatie", + "Reminders" : "Herinneringen", + "on" : "op", "To generate new signatures, you must first generate the root certificate." : "Om nieuwe handtekeningen te genereren, moet je eerst het rootcertificaat genereren.", "Generating certificate." : "Genereren certificaat.", "Could not generate certificate." : "Kon het certificaat niet genereren.", diff --git a/l10n/nn_NO.js b/l10n/nn_NO.js index dc2643a27c..10e3c06e29 100644 --- a/l10n/nn_NO.js +++ b/l10n/nn_NO.js @@ -45,6 +45,7 @@ OC.L10N.register( "Current password" : "Passord", "New password" : "Nytt passord", "Resource" : "Ressurs", + "Reminders" : "Påminningar", "Yes" : "Ja", "No" : "Nei", "No date" : "No date" diff --git a/l10n/nn_NO.json b/l10n/nn_NO.json index 6ad0e02bf9..66114faf6c 100644 --- a/l10n/nn_NO.json +++ b/l10n/nn_NO.json @@ -43,6 +43,7 @@ "Current password" : "Passord", "New password" : "Nytt passord", "Resource" : "Ressurs", + "Reminders" : "Påminningar", "Yes" : "Ja", "No" : "Nei", "No date" : "No date" diff --git a/l10n/oc.js b/l10n/oc.js index d5215c0335..8fa8da966f 100644 --- a/l10n/oc.js +++ b/l10n/oc.js @@ -106,6 +106,8 @@ OC.L10N.register( "New password" : "Senhal novèl", "Remove" : "Suprimir", "Resource" : "Ressorsa", + "Reminders" : "Rapèls", + "on" : "lo", "Generating certificate." : "Generacion del certificat", "Generated certificate!" : "Certificat generat !", "Yes" : "Òc", diff --git a/l10n/oc.json b/l10n/oc.json index 6219d743e0..b0e4ea26e9 100644 --- a/l10n/oc.json +++ b/l10n/oc.json @@ -104,6 +104,8 @@ "New password" : "Senhal novèl", "Remove" : "Suprimir", "Resource" : "Ressorsa", + "Reminders" : "Rapèls", + "on" : "lo", "Generating certificate." : "Generacion del certificat", "Generated certificate!" : "Certificat generat !", "Yes" : "Òc", diff --git a/l10n/pl.js b/l10n/pl.js index 6aaeff5341..c8de5ec51f 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -231,6 +231,8 @@ OC.L10N.register( "Legal information" : "Informacje prawne", "This information will appear on the validation page" : "Informacja ta pojawi się na stronie weryfikacji", "Legal Information" : "Informacje prawne", + "Reminders" : "Przypomnienia", + "on" : "o", "To generate new signatures, you must first generate the root certificate." : "Aby wygenerować nowe sygnatury, musisz najpierw wygenerować certyfikat główny.", "Generate root certificate" : "Wygeneruj certyfikat główny", "Generating certificate." : "Generowanie certyfikatu.", diff --git a/l10n/pl.json b/l10n/pl.json index 97dfbaff02..799b5e4013 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -229,6 +229,8 @@ "Legal information" : "Informacje prawne", "This information will appear on the validation page" : "Informacja ta pojawi się na stronie weryfikacji", "Legal Information" : "Informacje prawne", + "Reminders" : "Przypomnienia", + "on" : "o", "To generate new signatures, you must first generate the root certificate." : "Aby wygenerować nowe sygnatury, musisz najpierw wygenerować certyfikat główny.", "Generate root certificate" : "Wygeneruj certyfikat główny", "Generating certificate." : "Generowanie certyfikatu.", diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index d9f7596116..f25f311e94 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Informação legal", "This information will appear on the validation page" : "Esta informação aparecerá na página de validação ", "Legal Information" : "Informação Legal", + "Reminders" : "Lembretes", + "on" : "ligado", "Root certificate data" : "Dados do certificado raiz", "To generate new signatures, you must first generate the root certificate." : "Para gerar novas assinaturas, você precisa primeiro gerar o certificado raiz.", "Generate root certificate" : "Gerar certificado raiz", diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index 49b0c4d279..3115007377 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -375,6 +375,8 @@ "Legal information" : "Informação legal", "This information will appear on the validation page" : "Esta informação aparecerá na página de validação ", "Legal Information" : "Informação Legal", + "Reminders" : "Lembretes", + "on" : "ligado", "Root certificate data" : "Dados do certificado raiz", "To generate new signatures, you must first generate the root certificate." : "Para gerar novas assinaturas, você precisa primeiro gerar o certificado raiz.", "Generate root certificate" : "Gerar certificado raiz", diff --git a/l10n/pt_PT.js b/l10n/pt_PT.js index 659a36cca5..552d0a0085 100644 --- a/l10n/pt_PT.js +++ b/l10n/pt_PT.js @@ -84,6 +84,8 @@ OC.L10N.register( "Message" : "Mensagem", "Resource" : "Recurso", "Dependencies" : "Dependências", + "Reminders" : "Lembretes", + "on" : "em", "Yes" : "Sim", "No" : "Não", "Reset to default" : "Repor original", diff --git a/l10n/pt_PT.json b/l10n/pt_PT.json index 1ffae660db..055f031861 100644 --- a/l10n/pt_PT.json +++ b/l10n/pt_PT.json @@ -82,6 +82,8 @@ "Message" : "Mensagem", "Resource" : "Recurso", "Dependencies" : "Dependências", + "Reminders" : "Lembretes", + "on" : "em", "Yes" : "Sim", "No" : "Não", "Reset to default" : "Repor original", diff --git a/l10n/ro.js b/l10n/ro.js index 1e76364c1b..14de093c7c 100644 --- a/l10n/ro.js +++ b/l10n/ro.js @@ -83,6 +83,8 @@ OC.L10N.register( "Message" : "Mesaj", "Resource" : "Resursă", "Dependencies" : "Dependențe", + "Reminders" : "Mementouri", + "on" : "pe", "Yes" : "a", "No" : "Nu", "Name:" : "Nume:", diff --git a/l10n/ro.json b/l10n/ro.json index d380ff57f1..7253402388 100644 --- a/l10n/ro.json +++ b/l10n/ro.json @@ -81,6 +81,8 @@ "Message" : "Mesaj", "Resource" : "Resursă", "Dependencies" : "Dependențe", + "Reminders" : "Mementouri", + "on" : "pe", "Yes" : "a", "No" : "Nu", "Name:" : "Nume:", diff --git a/l10n/ru.js b/l10n/ru.js index 2e8434822a..d8157bdd0b 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -231,6 +231,8 @@ OC.L10N.register( "Legal information" : "Юридическая информация", "This information will appear on the validation page" : "Эта информация появится на странице проверки", "Legal Information" : "Юридическая информация", + "Reminders" : "Напоминания", + "on" : "в", "To generate new signatures, you must first generate the root certificate." : "Чтобы сгенерировать новые подписи, вы должны сначала сгенерировать корневой сертификат.", "Generating certificate." : "Генерация сертификата.", "Could not generate certificate." : "Не удалось создать сертификат", diff --git a/l10n/ru.json b/l10n/ru.json index 41ad742b25..bc01f2ac25 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -229,6 +229,8 @@ "Legal information" : "Юридическая информация", "This information will appear on the validation page" : "Эта информация появится на странице проверки", "Legal Information" : "Юридическая информация", + "Reminders" : "Напоминания", + "on" : "в", "To generate new signatures, you must first generate the root certificate." : "Чтобы сгенерировать новые подписи, вы должны сначала сгенерировать корневой сертификат.", "Generating certificate." : "Генерация сертификата.", "Could not generate certificate." : "Не удалось создать сертификат", diff --git a/l10n/sc.js b/l10n/sc.js index 75f87e9070..0f57b33ef3 100644 --- a/l10n/sc.js +++ b/l10n/sc.js @@ -141,6 +141,8 @@ OC.L10N.register( "Legal information" : "Informatziones legales", "This information will appear on the validation page" : "Custas informatziones s'ant a mustrare in sa pàgina de cumbàlida", "Legal Information" : "Informatziones legales", + "Reminders" : "Promemòrias", + "on" : "allutu", "To generate new signatures, you must first generate the root certificate." : "Pro generare firmas noas, pro prima cosa depes generare su tzertificadu sorgente.", "Generating certificate." : "Generatzione tzertificadu.", "Could not generate certificate." : "Generatzione tzertificadu faddida.", diff --git a/l10n/sc.json b/l10n/sc.json index fd2e9dfb51..f6b2826cbd 100644 --- a/l10n/sc.json +++ b/l10n/sc.json @@ -139,6 +139,8 @@ "Legal information" : "Informatziones legales", "This information will appear on the validation page" : "Custas informatziones s'ant a mustrare in sa pàgina de cumbàlida", "Legal Information" : "Informatziones legales", + "Reminders" : "Promemòrias", + "on" : "allutu", "To generate new signatures, you must first generate the root certificate." : "Pro generare firmas noas, pro prima cosa depes generare su tzertificadu sorgente.", "Generating certificate." : "Generatzione tzertificadu.", "Could not generate certificate." : "Generatzione tzertificadu faddida.", diff --git a/l10n/sk.js b/l10n/sk.js index ab9c7b8882..0d0393c587 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -340,6 +340,8 @@ OC.L10N.register( "Legal information" : "Právne informácie", "This information will appear on the validation page" : "Tieto informácie sa zobrazia na overovacej stránke", "Legal Information" : "Právne informácie", + "Reminders" : "Pripomienky", + "on" : "o", "Root certificate data" : "Dáta koreňového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pre vygenerovanie nových podpisov naprv musíte vygenerovať koreňový certifikát.", "Generate root certificate" : "Vygenerovať koreňový certifikát", diff --git a/l10n/sk.json b/l10n/sk.json index a6ec37bdcd..29d479c274 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -338,6 +338,8 @@ "Legal information" : "Právne informácie", "This information will appear on the validation page" : "Tieto informácie sa zobrazia na overovacej stránke", "Legal Information" : "Právne informácie", + "Reminders" : "Pripomienky", + "on" : "o", "Root certificate data" : "Dáta koreňového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pre vygenerovanie nových podpisov naprv musíte vygenerovať koreňový certifikát.", "Generate root certificate" : "Vygenerovať koreňový certifikát", diff --git a/l10n/sl.js b/l10n/sl.js index 573b39e58e..2636a3a547 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -310,6 +310,8 @@ OC.L10N.register( "Legal information" : "Pravne podrobnosti", "This information will appear on the validation page" : "Besedilo, ki se prikaže na strani overitve podpisa", "Legal Information" : "Pravne podrobnosti", + "Reminders" : "Opomniki", + "on" : "na", "Root certificate data" : "Podatki korenskega potrdila", "To generate new signatures, you must first generate the root certificate." : "Za ustvarjanje podpisov je treba najprej ustvariti korensko potrdilo.", "Generate root certificate" : "Ustvari korensko potrdilo", diff --git a/l10n/sl.json b/l10n/sl.json index 919a86d417..10debc2570 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -308,6 +308,8 @@ "Legal information" : "Pravne podrobnosti", "This information will appear on the validation page" : "Besedilo, ki se prikaže na strani overitve podpisa", "Legal Information" : "Pravne podrobnosti", + "Reminders" : "Opomniki", + "on" : "na", "Root certificate data" : "Podatki korenskega potrdila", "To generate new signatures, you must first generate the root certificate." : "Za ustvarjanje podpisov je treba najprej ustvariti korensko potrdilo.", "Generate root certificate" : "Ustvari korensko potrdilo", diff --git a/l10n/sq.js b/l10n/sq.js index be58747e00..169675edb7 100644 --- a/l10n/sq.js +++ b/l10n/sq.js @@ -61,6 +61,7 @@ OC.L10N.register( "Message" : "Mesazh", "Resource" : "Burim", "Dependencies" : "Varësitë", + "Reminders" : "Kujtesë", "Yes" : "Yes", "No" : "Jo", "Reset to default" : "Rivendos tek të paracaktuarat", diff --git a/l10n/sq.json b/l10n/sq.json index fffe3e0efa..ac25264b25 100644 --- a/l10n/sq.json +++ b/l10n/sq.json @@ -59,6 +59,7 @@ "Message" : "Mesazh", "Resource" : "Burim", "Dependencies" : "Varësitë", + "Reminders" : "Kujtesë", "Yes" : "Yes", "No" : "Jo", "Reset to default" : "Rivendos tek të paracaktuarat", diff --git a/l10n/sr.js b/l10n/sr.js index d77b002226..01b87349eb 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Правне информације", "This information will appear on the validation page" : "Ове информације ће се појавити на страници за потврђивање", "Legal Information" : "Правне информације", + "Reminders" : "Подсетници", + "on" : "дана", "Root certificate data" : "Подаци кореног сертификата", "To generate new signatures, you must first generate the root certificate." : "Да бисте генерисали нове потписе, најпре морате да генеришете корени сертификат.", "Generate root certificate" : "Генериши корени сертификат", diff --git a/l10n/sr.json b/l10n/sr.json index 17900a376b..6203b2176a 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -375,6 +375,8 @@ "Legal information" : "Правне информације", "This information will appear on the validation page" : "Ове информације ће се појавити на страници за потврђивање", "Legal Information" : "Правне информације", + "Reminders" : "Подсетници", + "on" : "дана", "Root certificate data" : "Подаци кореног сертификата", "To generate new signatures, you must first generate the root certificate." : "Да бисте генерисали нове потписе, најпре морате да генеришете корени сертификат.", "Generate root certificate" : "Генериши корени сертификат", diff --git a/l10n/sv.js b/l10n/sv.js index 5761e3fd83..4d62c7ffab 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -376,6 +376,8 @@ OC.L10N.register( "Legal information" : "Juridisk information", "This information will appear on the validation page" : "Denna information kommer att visas på valideringssidan", "Legal Information" : "Juridisk information", + "Reminders" : "Påminnelser", + "on" : "den", "Root certificate data" : "Rotcertifikatdata", "To generate new signatures, you must first generate the root certificate." : "För att generera nya signaturer måste du först generera rotcertifikatet.", "Generate root certificate" : "Generera rotcertifikat", diff --git a/l10n/sv.json b/l10n/sv.json index 1c67b12507..fad2cf7a29 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -374,6 +374,8 @@ "Legal information" : "Juridisk information", "This information will appear on the validation page" : "Denna information kommer att visas på valideringssidan", "Legal Information" : "Juridisk information", + "Reminders" : "Påminnelser", + "on" : "den", "Root certificate data" : "Rotcertifikatdata", "To generate new signatures, you must first generate the root certificate." : "För att generera nya signaturer måste du först generera rotcertifikatet.", "Generate root certificate" : "Generera rotcertifikat", diff --git a/l10n/sw.js b/l10n/sw.js index 30af80ee43..7261cfb8a4 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -79,6 +79,8 @@ OC.L10N.register( "New password" : "Nenosiri jipya", "Remove" : "Ondoa", "Message" : "Message", + "Reminders" : "Vikumbusho", + "on" : "Juu ya", "Yes" : "Ndiyo", "No" : "Hapana", "Reset to default" : "Weka upya chaguo msingi", diff --git a/l10n/sw.json b/l10n/sw.json index bd61bfa2fc..0143be1987 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -77,6 +77,8 @@ "New password" : "Nenosiri jipya", "Remove" : "Ondoa", "Message" : "Message", + "Reminders" : "Vikumbusho", + "on" : "Juu ya", "Yes" : "Ndiyo", "No" : "Hapana", "Reset to default" : "Weka upya chaguo msingi", diff --git a/l10n/th.js b/l10n/th.js index 3c5030df44..3840032c3a 100644 --- a/l10n/th.js +++ b/l10n/th.js @@ -63,6 +63,7 @@ OC.L10N.register( "New password" : "รหัสผ่านใหม่", "Remove" : "ลบออก", "Resource" : "ทรัพยากร", + "Reminders" : "การแจ้งเตือน", "Yes" : "ใช่", "No" : "ไม่", "No date" : "ไม่มีวันที่" diff --git a/l10n/th.json b/l10n/th.json index fd962e94d6..8d1b70bc85 100644 --- a/l10n/th.json +++ b/l10n/th.json @@ -61,6 +61,7 @@ "New password" : "รหัสผ่านใหม่", "Remove" : "ลบออก", "Resource" : "ทรัพยากร", + "Reminders" : "การแจ้งเตือน", "Yes" : "ใช่", "No" : "ไม่", "No date" : "ไม่มีวันที่" diff --git a/l10n/tr.js b/l10n/tr.js index ccca0a4d88..9261eb120a 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "Yasal bilgiler", "This information will appear on the validation page" : "Bu bilgiler doğrulama sayfasında görüntülenir", "Legal Information" : "Yasal bilgiler", + "Reminders" : "Anımsatıcılar", + "on" : "şu gün", "Root certificate data" : "Kök sertifika verileri", "To generate new signatures, you must first generate the root certificate." : "Yeni imzalar oluşturmak için, öncelikle bir kök sertifika oluşturmalısınız.", "Generate root certificate" : "Kök sertifikası oluştur", diff --git a/l10n/tr.json b/l10n/tr.json index e30dece92a..72d62edf0c 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -375,6 +375,8 @@ "Legal information" : "Yasal bilgiler", "This information will appear on the validation page" : "Bu bilgiler doğrulama sayfasında görüntülenir", "Legal Information" : "Yasal bilgiler", + "Reminders" : "Anımsatıcılar", + "on" : "şu gün", "Root certificate data" : "Kök sertifika verileri", "To generate new signatures, you must first generate the root certificate." : "Yeni imzalar oluşturmak için, öncelikle bir kök sertifika oluşturmalısınız.", "Generate root certificate" : "Kök sertifikası oluştur", diff --git a/l10n/ug.js b/l10n/ug.js index e09d6bbc90..bf7cf77479 100644 --- a/l10n/ug.js +++ b/l10n/ug.js @@ -309,6 +309,8 @@ OC.L10N.register( "Legal information" : "قانۇن ئۇچۇرى", "This information will appear on the validation page" : "بۇ ئۇچۇرلار دەلىللەش بېتىدە كۆرۈنىدۇ", "Legal Information" : "قانۇن ئۇچۇرى", + "Reminders" : "ئەسكەرتىش", + "on" : "on", "Root certificate data" : "يىلتىز گۇۋاھنامىسى ئۇچۇرى", "To generate new signatures, you must first generate the root certificate." : "يېڭى ئىمزا ھاسىل قىلىش ئۈچۈن ، ئالدى بىلەن يىلتىز گۇۋاھنامىسى ھاسىل قىلىشىڭىز كېرەك.", "Generate root certificate" : "يىلتىز گۇۋاھنامىسى ھاسىل قىلىڭ", diff --git a/l10n/ug.json b/l10n/ug.json index 8e2e731168..495c08e934 100644 --- a/l10n/ug.json +++ b/l10n/ug.json @@ -307,6 +307,8 @@ "Legal information" : "قانۇن ئۇچۇرى", "This information will appear on the validation page" : "بۇ ئۇچۇرلار دەلىللەش بېتىدە كۆرۈنىدۇ", "Legal Information" : "قانۇن ئۇچۇرى", + "Reminders" : "ئەسكەرتىش", + "on" : "on", "Root certificate data" : "يىلتىز گۇۋاھنامىسى ئۇچۇرى", "To generate new signatures, you must first generate the root certificate." : "يېڭى ئىمزا ھاسىل قىلىش ئۈچۈن ، ئالدى بىلەن يىلتىز گۇۋاھنامىسى ھاسىل قىلىشىڭىز كېرەك.", "Generate root certificate" : "يىلتىز گۇۋاھنامىسى ھاسىل قىلىڭ", diff --git a/l10n/uk.js b/l10n/uk.js index d5bfe32bb7..792e2a3fa0 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -374,6 +374,8 @@ OC.L10N.register( "Legal information" : "Юридична інформація", "This information will appear on the validation page" : "Ця інформація з'явиться на сторінці валідації", "Legal Information" : "Юридична інформація", + "Reminders" : "Нагадування", + "on" : "о", "Root certificate data" : "Дані кореневого сертифіката", "To generate new signatures, you must first generate the root certificate." : "Щоб згенерувати нові підписи, ви повинні спочатку згенерувати кореневий сертифікат.", "Generate root certificate" : "Згенеруйте кореневий сертифікат", diff --git a/l10n/uk.json b/l10n/uk.json index 00120e7e4b..e7efebfb68 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -372,6 +372,8 @@ "Legal information" : "Юридична інформація", "This information will appear on the validation page" : "Ця інформація з'явиться на сторінці валідації", "Legal Information" : "Юридична інформація", + "Reminders" : "Нагадування", + "on" : "о", "Root certificate data" : "Дані кореневого сертифіката", "To generate new signatures, you must first generate the root certificate." : "Щоб згенерувати нові підписи, ви повинні спочатку згенерувати кореневий сертифікат.", "Generate root certificate" : "Згенеруйте кореневий сертифікат", diff --git a/l10n/uz.js b/l10n/uz.js index 16c28becd6..eb63ff2f8f 100644 --- a/l10n/uz.js +++ b/l10n/uz.js @@ -45,12 +45,14 @@ OC.L10N.register( "Last 7 days" : "Oxirgi 7 kun", "Last 30 days" : "Oxirgi 30 kun", "Modified" : "Modified", + "Remove filter" : "Filtrni olib tashlang", "{fileCount} files" : "{fileCount} fayllari", "_{count} selected_::_{count} selected_" : ["{count} tanlangan"], "Password reset" : "Password reset", "Current password" : "Current password", "New password" : "New password", "Remove" : "O'chirish", + "on" : "da", "Yes" : "Yes", "No" : "No", "Remove background" : "Fonni olib tashlash", diff --git a/l10n/uz.json b/l10n/uz.json index 4842cc2b9e..7419b58b5d 100644 --- a/l10n/uz.json +++ b/l10n/uz.json @@ -43,12 +43,14 @@ "Last 7 days" : "Oxirgi 7 kun", "Last 30 days" : "Oxirgi 30 kun", "Modified" : "Modified", + "Remove filter" : "Filtrni olib tashlang", "{fileCount} files" : "{fileCount} fayllari", "_{count} selected_::_{count} selected_" : ["{count} tanlangan"], "Password reset" : "Password reset", "Current password" : "Current password", "New password" : "New password", "Remove" : "O'chirish", + "on" : "da", "Yes" : "Yes", "No" : "No", "Remove background" : "Fonni olib tashlash", diff --git a/l10n/vi.js b/l10n/vi.js index ea833d7907..d5fa6d5544 100644 --- a/l10n/vi.js +++ b/l10n/vi.js @@ -82,6 +82,8 @@ OC.L10N.register( "Remove" : "Xoá", "Resource" : "Tài nguyên", "Dependencies" : "Các phụ thuộc", + "Reminders" : "Nhắc nhở", + "on" : "trên", "Yes" : "Có", "No" : "Không", "Reset to default" : "Đặt lại về mặc định", diff --git a/l10n/vi.json b/l10n/vi.json index ae142e9a02..e7e1368e2e 100644 --- a/l10n/vi.json +++ b/l10n/vi.json @@ -80,6 +80,8 @@ "Remove" : "Xoá", "Resource" : "Tài nguyên", "Dependencies" : "Các phụ thuộc", + "Reminders" : "Nhắc nhở", + "on" : "trên", "Yes" : "Có", "No" : "Không", "Reset to default" : "Đặt lại về mặc định", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index 1a78499bcd..9a80e2a253 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -215,6 +215,8 @@ OC.L10N.register( "Legal information" : "法律信息", "This information will appear on the validation page" : "该信息将出现在验证页面上", "Legal Information" : "法律信息", + "Reminders" : "提醒", + "on" : "于", "To generate new signatures, you must first generate the root certificate." : "要生成新的签名,你必须首先生成根证书。", "Generate root certificate" : "生成根证书", "Generating certificate." : "生成证书中", diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 6c4e387784..c0d7b7220f 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -213,6 +213,8 @@ "Legal information" : "法律信息", "This information will appear on the validation page" : "该信息将出现在验证页面上", "Legal Information" : "法律信息", + "Reminders" : "提醒", + "on" : "于", "To generate new signatures, you must first generate the root certificate." : "要生成新的签名,你必须首先生成根证书。", "Generate root certificate" : "生成根证书", "Generating certificate." : "生成证书中", diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js index ef926e6635..cde94d513e 100644 --- a/l10n/zh_HK.js +++ b/l10n/zh_HK.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "法律資訊", "This information will appear on the validation page" : "此資訊將顯示在驗證頁面上", "Legal Information" : "法律資訊", + "Reminders" : "提醒", + "on" : "在", "Root certificate data" : "根證書資料", "To generate new signatures, you must first generate the root certificate." : "要生成新簽署,必須首先生成根證書。", "Generate root certificate" : "生成根證書", diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json index 23d68d5af9..b9a79057b4 100644 --- a/l10n/zh_HK.json +++ b/l10n/zh_HK.json @@ -375,6 +375,8 @@ "Legal information" : "法律資訊", "This information will appear on the validation page" : "此資訊將顯示在驗證頁面上", "Legal Information" : "法律資訊", + "Reminders" : "提醒", + "on" : "在", "Root certificate data" : "根證書資料", "To generate new signatures, you must first generate the root certificate." : "要生成新簽署,必須首先生成根證書。", "Generate root certificate" : "生成根證書", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index 88eb18f058..f32d532e19 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -377,6 +377,8 @@ OC.L10N.register( "Legal information" : "法律資訊", "This information will appear on the validation page" : "此資訊將會顯示在驗證頁面上", "Legal Information" : "法律資訊", + "Reminders" : "提醒", + "on" : "在", "Root certificate data" : "根憑證資料", "To generate new signatures, you must first generate the root certificate." : "要產生新簽章,您必須先產生根憑證。", "Generate root certificate" : "產生根憑證", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 2b008a53e0..4ef99289fd 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -375,6 +375,8 @@ "Legal information" : "法律資訊", "This information will appear on the validation page" : "此資訊將會顯示在驗證頁面上", "Legal Information" : "法律資訊", + "Reminders" : "提醒", + "on" : "在", "Root certificate data" : "根憑證資料", "To generate new signatures, you must first generate the root certificate." : "要產生新簽章,您必須先產生根憑證。", "Generate root certificate" : "產生根憑證", From 5ca9cbbc8faf78dda783f38a9376c2ab3d119e40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 13 Sep 2025 14:00:37 +0000 Subject: [PATCH 0294/5910] chore(deps): Bump axios from 1.9.0 to 1.12.1 Bumps [axios](https://github.com/axios/axios) from 1.9.0 to 1.12.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.9.0...v1.12.1) --- updated-dependencies: - dependency-name: axios dependency-version: 1.12.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c617336a8..eda5af8d99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5636,13 +5636,12 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", - "license": "MIT", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.1.tgz", + "integrity": "sha512-Kn4kbSXpkFHCGE6rBFNwIv0GQs4AvDT80jlveJDKFxjbTYMUeB4QtsdPCv6H8Cm19Je7IU6VFtRl2zWZI0rudQ==", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, From 631c26e23b34ea13a349f04adbb8bb7d0f98e9e7 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sat, 13 Sep 2025 12:07:07 -0300 Subject: [PATCH 0295/5910] fix: var name The API expect only max. Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- src/views/Settings/Reminders.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Settings/Reminders.vue b/src/views/Settings/Reminders.vue index eb45aa3949..f13f39441b 100644 --- a/src/views/Settings/Reminders.vue +++ b/src/views/Settings/Reminders.vue @@ -170,7 +170,7 @@ export default { await axios.post(generateOcsUrl('/apps/libresign/api/v1/admin/reminder'), { daysBefore: parseInt(this.reminderDaysBefore), daysBetween: parseInt(this.reminderDaysBetween), - reminderMax: parseInt(this.reminderMax), + max: parseInt(this.reminderMax), sendTimer: this.formatHourMinute(this.reminderSendTimer), }) .then(({ data }) => { From 45920ca9108bc5dc8278580decd32ad4ecb49de4 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sat, 13 Sep 2025 12:07:32 -0300 Subject: [PATCH 0296/5910] fix: remove unused helper text Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- src/views/Settings/Reminders.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/Settings/Reminders.vue b/src/views/Settings/Reminders.vue index f13f39441b..bdf22a1d86 100644 --- a/src/views/Settings/Reminders.vue +++ b/src/views/Settings/Reminders.vue @@ -31,7 +31,6 @@ type="number" :min="0" :step="1" - :helper-text="helperTextDaysBetween" :spellcheck="false" :success="displaySuccessReminderDaysBetween" @keydown.enter="save" From 504470e0e936805bf3d4a2f5aeffb2886de448ad Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sat, 13 Sep 2025 13:52:41 -0300 Subject: [PATCH 0297/5910] chore: changelog [skip ci] Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1225306fa..90adfabb4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,31 @@ Types of changes: +## 12.0.0-beta.2 - 2025-09-13 +### Changes +- Update translations +- Bump dependencies + +### Fixes +- fix: typo [#5444](https://github.com/LibreSign/libresign/pull/5444) + +## 11.4.1 - 2025-09-13 +### Changes +- Update translations +- Bump dependencies + +### Fixes +- fix: typo [#5443](https://github.com/LibreSign/libresign/pull/5443) + +## 10.10.1 - 2025-09-13 +### Changes +- Update translations +- Bump dependencies + +### Fixes +- fix: typo [#5442](https://github.com/LibreSign/libresign/pull/5442) + + ## 12.0.0-beta.1 - 2025-09-12 ### Changes - Say hello to Nextcloud 32 From b4ac553a236e6758a10dd97b40e8909dd5a327df Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 14 Sep 2025 02:28:10 +0000 Subject: [PATCH 0298/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/af.js | 1 + l10n/af.json | 1 + l10n/ar.js | 2 ++ l10n/ar.json | 2 ++ l10n/ast.js | 1 + l10n/ast.json | 1 + l10n/be.js | 3 +++ l10n/be.json | 3 +++ l10n/bg.js | 1 + l10n/bg.json | 1 + l10n/de.js | 9 +++++++++ l10n/de.json | 9 +++++++++ l10n/de_DE.js | 9 +++++++++ l10n/de_DE.json | 9 +++++++++ l10n/es.js | 9 +++++++++ l10n/es.json | 9 +++++++++ l10n/gl.js | 20 +++++++++++++++++++- l10n/gl.json | 20 +++++++++++++++++++- 18 files changed, 108 insertions(+), 2 deletions(-) diff --git a/l10n/af.js b/l10n/af.js index c8aaf2f78a..fa98aee80f 100644 --- a/l10n/af.js +++ b/l10n/af.js @@ -54,6 +54,7 @@ OC.L10N.register( "New password" : "Nuwe wagwoord", "Resource" : "Hulpbron", "Dependencies" : "Afhanklikhede", + "Reminders" : "Herinneringe", "Yes" : "Ja", "No" : "Nee", "Reset to default" : "Herstel na verstek", diff --git a/l10n/af.json b/l10n/af.json index bcd80e23ea..3f8c587659 100644 --- a/l10n/af.json +++ b/l10n/af.json @@ -52,6 +52,7 @@ "New password" : "Nuwe wagwoord", "Resource" : "Hulpbron", "Dependencies" : "Afhanklikhede", + "Reminders" : "Herinneringe", "Yes" : "Ja", "No" : "Nee", "Reset to default" : "Herstel na verstek", diff --git a/l10n/ar.js b/l10n/ar.js index 914b2d99b2..edd1fbb90d 100644 --- a/l10n/ar.js +++ b/l10n/ar.js @@ -340,6 +340,8 @@ OC.L10N.register( "Legal information" : "المعلومات القانونية", "This information will appear on the validation page" : "سوف تظهر هذه المعلومات على صفحة التحقق من الصحة", "Legal Information" : "المعلومات القانونية", + "Reminders" : "تذكيرات", + "on" : "في", "Root certificate data" : "بيانات شهادة المصادقة الجذرية", "To generate new signatures, you must first generate the root certificate." : "لإنشاء توقيعات جديدة ، يجب أولاً إنشاء شهادة الدليل الأساسي.", "Generate root certificate" : "توليد شهادة مصادقة جذرية", diff --git a/l10n/ar.json b/l10n/ar.json index 57f0ed4979..22bf30405d 100644 --- a/l10n/ar.json +++ b/l10n/ar.json @@ -338,6 +338,8 @@ "Legal information" : "المعلومات القانونية", "This information will appear on the validation page" : "سوف تظهر هذه المعلومات على صفحة التحقق من الصحة", "Legal Information" : "المعلومات القانونية", + "Reminders" : "تذكيرات", + "on" : "في", "Root certificate data" : "بيانات شهادة المصادقة الجذرية", "To generate new signatures, you must first generate the root certificate." : "لإنشاء توقيعات جديدة ، يجب أولاً إنشاء شهادة الدليل الأساسي.", "Generate root certificate" : "توليد شهادة مصادقة جذرية", diff --git a/l10n/ast.js b/l10n/ast.js index 9a84a433ad..8885968376 100644 --- a/l10n/ast.js +++ b/l10n/ast.js @@ -89,6 +89,7 @@ OC.L10N.register( "Message" : "Mensaxe", "Dependencies" : "Dependencies", "Legal information" : "Información llegal", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "Non", "Reset to default" : "Reafitar los valores", diff --git a/l10n/ast.json b/l10n/ast.json index 9f06723b9d..d66fe8b5cd 100644 --- a/l10n/ast.json +++ b/l10n/ast.json @@ -87,6 +87,7 @@ "Message" : "Mensaxe", "Dependencies" : "Dependencies", "Legal information" : "Información llegal", + "Reminders" : "Recordatorios", "Yes" : "Sí", "No" : "Non", "Reset to default" : "Reafitar los valores", diff --git a/l10n/be.js b/l10n/be.js index e693248bf7..f08b6c2f2c 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -90,6 +90,9 @@ OC.L10N.register( "Resource" : "Рэсурс", "Dependencies" : "Залежнасці", "Reminders" : "Напаміны", + "The first message is not considered a notification" : "Першае паведамленне не лічыцца апавяшчэннем", + "off" : "выкл.", + "on" : "укл.", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/be.json b/l10n/be.json index e880ef8fc8..1ac5bd79ed 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -88,6 +88,9 @@ "Resource" : "Рэсурс", "Dependencies" : "Залежнасці", "Reminders" : "Напаміны", + "The first message is not considered a notification" : "Першае паведамленне не лічыцца апавяшчэннем", + "off" : "выкл.", + "on" : "укл.", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/bg.js b/l10n/bg.js index 3de0eb5d53..8535e754e1 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -244,6 +244,7 @@ OC.L10N.register( "This information will appear on the validation page" : "Тази информация ще се появи на страницата за проверка", "Legal Information" : "Правна информация", "Reminders" : "Напомняния", + "on" : "на", "To generate new signatures, you must first generate the root certificate." : "За да генерирате нови подписи, първо трябва да генерирате основния сертификат.", "Generating certificate." : "Генериране на сертификат.", "Could not generate certificate." : "Неуспешно генериране на сертификат.", diff --git a/l10n/bg.json b/l10n/bg.json index 29a0235395..ea6f555781 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -242,6 +242,7 @@ "This information will appear on the validation page" : "Тази информация ще се появи на страницата за проверка", "Legal Information" : "Правна информация", "Reminders" : "Напомняния", + "on" : "на", "To generate new signatures, you must first generate the root certificate." : "За да генерирате нови подписи, първо трябва да генерирате основния сертификат.", "Generating certificate." : "Генериране на сертификат.", "Could not generate certificate." : "Неуспешно генериране на сертификат.", diff --git a/l10n/de.js b/l10n/de.js index 8834aee4c2..65814f0370 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", + "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", + "off" : "Aus", "on" : "am", + "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", + "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", + "Days between reminders" : "Tage zwischen den Erinnerungen", + "Max reminders per signer" : "Maximale Anzahl von Erinnerungen pro Unterzeichner", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erzeugen, musst du zunächst das Stammzertifikat erzeugen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de.json b/l10n/de.json index 900c0fd3ba..db6978cd63 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", + "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", + "off" : "Aus", "on" : "am", + "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", + "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", + "Days between reminders" : "Tage zwischen den Erinnerungen", + "Max reminders per signer" : "Maximale Anzahl von Erinnerungen pro Unterzeichner", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erzeugen, musst du zunächst das Stammzertifikat erzeugen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index cb7a4977fb..1c12cee63e 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", + "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", + "off" : "Aus", "on" : "am", + "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", + "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", + "Days between reminders" : "Tage zwischen den Erinnerungen", + "Max reminders per signer" : "Maximale Anzahl von Erinnerungen pro Unterzeichner", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erstellen, müssen Sie zunächst ein Root-Zertifikat erstellen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 1da7504966..8792ab0c48 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Diese Informationen werden auf der Überprüfungsseite angezeigt", "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", + "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", + "off" : "Aus", "on" : "am", + "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", + "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", + "Days between reminders" : "Tage zwischen den Erinnerungen", + "Max reminders per signer" : "Maximale Anzahl von Erinnerungen pro Unterzeichner", "Root certificate data" : "Daten für Root-Zertifikat", "To generate new signatures, you must first generate the root certificate." : "Um neue Signaturen zu erstellen, müssen Sie zunächst ein Root-Zertifikat erstellen.", "Generate root certificate" : "Root-Zertifikat erstellen", diff --git a/l10n/es.js b/l10n/es.js index 6fc4e20c27..2d0eb09a72 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información Legal", "Reminders" : "Recordatorios", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Haga seguimiento con recordatorios automáticos. Los firmantes recibirán recordatorios hasta que firmen o rechacen.", + "Send time (HH:mm)" : "Hora de envío (HH:mm)", + "The first message is not considered a notification" : "El primer mensaje no se considera una notificación", + "Zero or empty is no reminder." : "Cero o vacío no es una notificación.", + "off" : "apagado", "on" : "activo", + "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} los recordatorios automáticos", + "First reminder after (days)" : "El primer recordatorio sucede luego de (días)", + "Days between reminders" : "Días entre recordatorios", + "Max reminders per signer" : "Máx. de recordatorios por firmante", "Root certificate data" : "Datos del certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes crear un certificado raíz.", "Generate root certificate" : "Generar certificado raíz", diff --git a/l10n/es.json b/l10n/es.json index dc1ce28da3..17ec03eb4f 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Esta información aparecerá en la página de validación", "Legal Information" : "Información Legal", "Reminders" : "Recordatorios", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Haga seguimiento con recordatorios automáticos. Los firmantes recibirán recordatorios hasta que firmen o rechacen.", + "Send time (HH:mm)" : "Hora de envío (HH:mm)", + "The first message is not considered a notification" : "El primer mensaje no se considera una notificación", + "Zero or empty is no reminder." : "Cero o vacío no es una notificación.", + "off" : "apagado", "on" : "activo", + "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} los recordatorios automáticos", + "First reminder after (days)" : "El primer recordatorio sucede luego de (días)", + "Days between reminders" : "Días entre recordatorios", + "Max reminders per signer" : "Máx. de recordatorios por firmante", "Root certificate data" : "Datos del certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para generar nuevas firmas, primero debes crear un certificado raíz.", "Generate root certificate" : "Generar certificado raíz", diff --git a/l10n/gl.js b/l10n/gl.js index d181e569bf..340842a160 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -3,6 +3,8 @@ OC.L10N.register( { "{from} requested your signature on {file}" : "{from} solicitou a súa sinatura en {file}", "{from} made changes on {file}" : "{from} fixo cambios en {file}", + "{from} signed {file}" : "{from} asinou {file}", + "A document has been signed" : "Foi asinado un documento", "You have a file to sign" : "Ten un ficheiro para asinar", "Success" : "Correcto", "Invalid user or password" : "O usuario ou o contrasinal non é correcto", @@ -26,6 +28,7 @@ OC.L10N.register( "Invalid UUID" : "UUID non válido", "Notification sent with success." : "A notificación foi enviada satisfactoriamente", "File signed" : "Ficheiro asinado", + "Internal Server Error" : "Produciuse un erro interno do servidor", "Renewed with success. Access the link again." : "Renovada correctamente. Acceda de novo á ligazón.", "Invalid data to sign file" : "Os datos non son válidos para asinar o ficheiro", "The code to sign file was successfully requested." : "O código para asinar o ficheiro foi solicitado correctamente.", @@ -43,6 +46,7 @@ OC.L10N.register( "deleted" : "eliminado", "Identification Document" : "Documento de Identificación", "User not found." : "Usuario non atopado.", + "Digitally signed by LibreSign." : "Asinado dixitalmente por LibreSign.", "Validate in %s." : "Validar en %s.", "The admin hasn't set up LibreSign yet, please wait." : "A administración do sitio aínda non configurou LibreSign, agarde.", "Unsigned file." : "Ficheiro sen asinar.", @@ -97,6 +101,7 @@ OC.L10N.register( "You are not allowed to request signing" : "Vde. non ten permiso para solicitar a sinatura", "Invalid status code for file." : "O código de estado do ficheiro non é válido.", "Sign process already started. Unable to change status." : "O proceso de asinado xa comezou. Non é posíbel cambiar o estado.", + "Please provide either UUID or File object" : "Forneza o UUID ou o obxecto de ficheiro", "No user data" : "Non hai datos de usuario", "User %s has no email address." : "O usuario %s non ten enderezo de correo-e.", "Email required" : "Precísase do correo-e", @@ -125,11 +130,15 @@ OC.L10N.register( "Visible element file must be png." : "O ficheiro de elementos visíbeis debe ser png.", "Empty file" : "Ficheiro baleiro", "Invalid file provided. Need to be a .pfx file." : "Forneceuse un ficheiro non válido. Debe ser un ficheiro .pfx.", + "Common Name (CN)" : "Nome común (CN)", "Two-letter ISO 3166 country code" : "Código de país de dúas letras ISO 3166", "Full name of states or provinces" : "Nome completo dos estados ou provincias", "Name of a locality or place, such as a city, county, or other geographic region" : "Nome dunha localidade ou lugar, como unha cidade, concello ou outra rexión xeográfica", "Name of an organization" : "Nome dunha organización", "Name of an organizational unit" : "Nome dunha unidade organizativa", + "Parameter '%s' is required!" : "Precisase do parámetro «%s»", + "Parameter '%s' should be betweeen %s and %s." : "O parámetro «%s» debe estar entre %s e %s.", + "Invalid OID format. Expected pattern: %s" : "O formato OID non é válido. Agardase un patrón: %s", "Invalid file identifier" : "O identificador de ficheiro non é válido", "No file provided" : "Non se forneceu ningún ficheiro", "Invalid file provided" : "O ficheiro fornecido non é válido", @@ -139,6 +148,8 @@ OC.L10N.register( "Link expired." : "A ligazón caducou.", "Invalid code." : "Código non válido.", "Link expired" : "A ligazón caducou", + "The link to sign the document has expired.\nWe will send a new link to the email %1$s.\nClick below to receive the new link and be able to sign the document." : "A ligazón para asinar o documento caducou.\nEnviaremos unha nova ligazón ao correo %1$s.\nPrema a seguir para recibir a nova ligazón e poder asinar o documento.", + "Renew" : "Renovar", "Account" : "Conta", "Invalid user" : "O usuario non é válido", "Email" : "Correo-e", @@ -150,12 +161,16 @@ OC.L10N.register( "Click to sign" : "Prema para asinar", "Email token" : "Testemuño de correo-e", "Certificate with password" : "Certificado con contrasinal", + "Invalid certificate" : "Certificado non válido", "LibreSign: Changes into a file for you to sign" : "LibreSign: cambios nun ficheiro que ten que asinar", "File to sign" : "Ficheiro para asinar", "Changes have been made in a file that you have to sign. Access the link below:" : "Fixéronse cambios nun ficheiro que ten que asinar. Acceda á seguinte ligazón:", "Sign »%s«" : "Asinar «%s»", "LibreSign: There is a file for you to sign" : "LibreSign: hai un ficheiro que ten que asinar", "There is a document for you to sign. Access the link below:" : "Hai un documento para que o asine. Acceda á seguinte ligazón:", + "LibreSign: A file has been signed" : "LibreSign: Foi asinado un ficheiro", + "%s signed the document. You can access it using the link below:" : "%s asinou o documento. Pode acceder a el empregando a seguinte ligazón:", + "View signed file »%s«" : "Ver o ficheiro asinado «%s»", "LibreSign: Code to sign file" : "LibreSign: código para asinar o ficheiro", "Use this code to sign the document:" : "Use este código para asinar o documento:", "Empty users list" : "A lista de usuarios está baleira", @@ -340,7 +355,10 @@ OC.L10N.register( "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", "Reminders" : "Lembretes", - "on" : "o", + "Zero or empty is no reminder." : "Cero ou baleiro non é lembrete.", + "off" : "apagado", + "on" : "activado", + "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} os lembretes automáticos", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", diff --git a/l10n/gl.json b/l10n/gl.json index 120a73e111..649fc10312 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -1,6 +1,8 @@ { "translations": { "{from} requested your signature on {file}" : "{from} solicitou a súa sinatura en {file}", "{from} made changes on {file}" : "{from} fixo cambios en {file}", + "{from} signed {file}" : "{from} asinou {file}", + "A document has been signed" : "Foi asinado un documento", "You have a file to sign" : "Ten un ficheiro para asinar", "Success" : "Correcto", "Invalid user or password" : "O usuario ou o contrasinal non é correcto", @@ -24,6 +26,7 @@ "Invalid UUID" : "UUID non válido", "Notification sent with success." : "A notificación foi enviada satisfactoriamente", "File signed" : "Ficheiro asinado", + "Internal Server Error" : "Produciuse un erro interno do servidor", "Renewed with success. Access the link again." : "Renovada correctamente. Acceda de novo á ligazón.", "Invalid data to sign file" : "Os datos non son válidos para asinar o ficheiro", "The code to sign file was successfully requested." : "O código para asinar o ficheiro foi solicitado correctamente.", @@ -41,6 +44,7 @@ "deleted" : "eliminado", "Identification Document" : "Documento de Identificación", "User not found." : "Usuario non atopado.", + "Digitally signed by LibreSign." : "Asinado dixitalmente por LibreSign.", "Validate in %s." : "Validar en %s.", "The admin hasn't set up LibreSign yet, please wait." : "A administración do sitio aínda non configurou LibreSign, agarde.", "Unsigned file." : "Ficheiro sen asinar.", @@ -95,6 +99,7 @@ "You are not allowed to request signing" : "Vde. non ten permiso para solicitar a sinatura", "Invalid status code for file." : "O código de estado do ficheiro non é válido.", "Sign process already started. Unable to change status." : "O proceso de asinado xa comezou. Non é posíbel cambiar o estado.", + "Please provide either UUID or File object" : "Forneza o UUID ou o obxecto de ficheiro", "No user data" : "Non hai datos de usuario", "User %s has no email address." : "O usuario %s non ten enderezo de correo-e.", "Email required" : "Precísase do correo-e", @@ -123,11 +128,15 @@ "Visible element file must be png." : "O ficheiro de elementos visíbeis debe ser png.", "Empty file" : "Ficheiro baleiro", "Invalid file provided. Need to be a .pfx file." : "Forneceuse un ficheiro non válido. Debe ser un ficheiro .pfx.", + "Common Name (CN)" : "Nome común (CN)", "Two-letter ISO 3166 country code" : "Código de país de dúas letras ISO 3166", "Full name of states or provinces" : "Nome completo dos estados ou provincias", "Name of a locality or place, such as a city, county, or other geographic region" : "Nome dunha localidade ou lugar, como unha cidade, concello ou outra rexión xeográfica", "Name of an organization" : "Nome dunha organización", "Name of an organizational unit" : "Nome dunha unidade organizativa", + "Parameter '%s' is required!" : "Precisase do parámetro «%s»", + "Parameter '%s' should be betweeen %s and %s." : "O parámetro «%s» debe estar entre %s e %s.", + "Invalid OID format. Expected pattern: %s" : "O formato OID non é válido. Agardase un patrón: %s", "Invalid file identifier" : "O identificador de ficheiro non é válido", "No file provided" : "Non se forneceu ningún ficheiro", "Invalid file provided" : "O ficheiro fornecido non é válido", @@ -137,6 +146,8 @@ "Link expired." : "A ligazón caducou.", "Invalid code." : "Código non válido.", "Link expired" : "A ligazón caducou", + "The link to sign the document has expired.\nWe will send a new link to the email %1$s.\nClick below to receive the new link and be able to sign the document." : "A ligazón para asinar o documento caducou.\nEnviaremos unha nova ligazón ao correo %1$s.\nPrema a seguir para recibir a nova ligazón e poder asinar o documento.", + "Renew" : "Renovar", "Account" : "Conta", "Invalid user" : "O usuario non é válido", "Email" : "Correo-e", @@ -148,12 +159,16 @@ "Click to sign" : "Prema para asinar", "Email token" : "Testemuño de correo-e", "Certificate with password" : "Certificado con contrasinal", + "Invalid certificate" : "Certificado non válido", "LibreSign: Changes into a file for you to sign" : "LibreSign: cambios nun ficheiro que ten que asinar", "File to sign" : "Ficheiro para asinar", "Changes have been made in a file that you have to sign. Access the link below:" : "Fixéronse cambios nun ficheiro que ten que asinar. Acceda á seguinte ligazón:", "Sign »%s«" : "Asinar «%s»", "LibreSign: There is a file for you to sign" : "LibreSign: hai un ficheiro que ten que asinar", "There is a document for you to sign. Access the link below:" : "Hai un documento para que o asine. Acceda á seguinte ligazón:", + "LibreSign: A file has been signed" : "LibreSign: Foi asinado un ficheiro", + "%s signed the document. You can access it using the link below:" : "%s asinou o documento. Pode acceder a el empregando a seguinte ligazón:", + "View signed file »%s«" : "Ver o ficheiro asinado «%s»", "LibreSign: Code to sign file" : "LibreSign: código para asinar o ficheiro", "Use this code to sign the document:" : "Use este código para asinar o documento:", "Empty users list" : "A lista de usuarios está baleira", @@ -338,7 +353,10 @@ "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", "Reminders" : "Lembretes", - "on" : "o", + "Zero or empty is no reminder." : "Cero ou baleiro non é lembrete.", + "off" : "apagado", + "on" : "activado", + "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} os lembretes automáticos", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", From 866740d951991f87694fffe92233d437e63bf539 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sun, 14 Sep 2025 20:39:14 -0300 Subject: [PATCH 0299/5910] chore: add link to logs Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/ConfigureCheckService.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/Service/Install/ConfigureCheckService.php b/lib/Service/Install/ConfigureCheckService.php index 342deb2633..8687858fc4 100644 --- a/lib/Service/Install/ConfigureCheckService.php +++ b/lib/Service/Install/ConfigureCheckService.php @@ -15,7 +15,9 @@ use OCA\Libresign\Handler\SignEngine\JSignPdfHandler; use OCA\Libresign\Helper\ConfigureCheckHelper; use OCA\Libresign\Helper\JavaHelper; +use OCP\App\IAppManager; use OCP\IAppConfig; +use OCP\IURLGenerator; use Psr\Log\LoggerInterface; class ConfigureCheckService { @@ -26,6 +28,8 @@ public function __construct( private IAppConfig $appConfig, private SystemConfig $systemConfig, private AppConfig $ocAppConfig, + protected IAppManager $appManager, + protected IURLGenerator $urlGenerator, private JSignPdfHandler $jSignPdfHandler, private CertificateEngineFactory $certificateEngineFactory, private SignSetupService $signSetupService, @@ -351,6 +355,14 @@ private function getErrorAndTipToResultOfVerify(array $result, string $resource) } } $this->logger->error('Invalid hash of binaries files', ['result' => $result]); + if ($this->appManager->isEnabledForUser('logreader')) { + return [ + 'Invalid hash of binaries files.', + 'Check your nextcloud.log file on ' + . $this->urlGenerator->linkToRouteAbsolute('settings.adminsettings.form', ['section' => 'logging']) + . ' and run occ libresign:install --all', + ]; + } return [ 'Invalid hash of binaries files.', 'Check your nextcloud.log file an run occ libresign:install --all', From 0c37386a41f378532284e55b63e9cdbae23452a6 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Sun, 14 Sep 2025 20:39:37 -0300 Subject: [PATCH 0300/5910] fix: typo Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/ConfigureCheckService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/Install/ConfigureCheckService.php b/lib/Service/Install/ConfigureCheckService.php index 8687858fc4..6589e52f6d 100644 --- a/lib/Service/Install/ConfigureCheckService.php +++ b/lib/Service/Install/ConfigureCheckService.php @@ -365,7 +365,7 @@ private function getErrorAndTipToResultOfVerify(array $result, string $resource) } return [ 'Invalid hash of binaries files.', - 'Check your nextcloud.log file an run occ libresign:install --all', + 'Check your nextcloud.log file and run occ libresign:install --all', ]; } From b9a962238e962b0e3e900003fc4ce5271056fbdc Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 15 Sep 2025 02:29:20 +0000 Subject: [PATCH 0301/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/et_EE.js | 13 +++++++++++-- l10n/et_EE.json | 13 +++++++++++-- l10n/tr.js | 11 ++++++++++- l10n/tr.json | 11 ++++++++++- l10n/zh_TW.js | 11 ++++++++++- l10n/zh_TW.json | 11 ++++++++++- 6 files changed, 62 insertions(+), 8 deletions(-) diff --git a/l10n/et_EE.js b/l10n/et_EE.js index ae53c038ce..4b8cd57381 100644 --- a/l10n/et_EE.js +++ b/l10n/et_EE.js @@ -203,8 +203,17 @@ OC.L10N.register( "Resource" : "Ressurss", "Dependencies" : "Sõltuvused", "Legal information" : "Juriidiline teave", - "Reminders" : "Meelespead", - "on" : "ajal", + "Reminders" : "Meeldetuletused", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Kasuta automaatseid meeldetuletusi. Allkirjastajad saavad meeldetuletuse seni, kuni ka kirjutavad alla või sellest keelduvad.", + "Send time (HH:mm)" : "Saatmise aeg (tt:mm)", + "The first message is not considered a notification" : "Esimest sõnumit ei loeta teavituseks", + "Zero or empty is no reminder." : "Tühuväärtus või väärtuse puudumine tähendab meeldetuletuse puudumist.", + "off" : "välja", + "on" : "sisse", + "Turn {reminderState} auto reminders" : "Lülita automaatsed meeldetuletused {reminderState}", + "First reminder after (days)" : "Esimene meeldetuletus (päevades)", + "Days between reminders" : "Päevi meeldetuletuste vahel", + "Max reminders per signer" : "Maksimaalne meeldetuletuste arv allakirjutaja kohta", "Yes" : "Jah", "No" : "Ei", "Include certificate policy" : "Kaasa sertifikaadireeglid", diff --git a/l10n/et_EE.json b/l10n/et_EE.json index 245208fbeb..a9ceb38087 100644 --- a/l10n/et_EE.json +++ b/l10n/et_EE.json @@ -201,8 +201,17 @@ "Resource" : "Ressurss", "Dependencies" : "Sõltuvused", "Legal information" : "Juriidiline teave", - "Reminders" : "Meelespead", - "on" : "ajal", + "Reminders" : "Meeldetuletused", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Kasuta automaatseid meeldetuletusi. Allkirjastajad saavad meeldetuletuse seni, kuni ka kirjutavad alla või sellest keelduvad.", + "Send time (HH:mm)" : "Saatmise aeg (tt:mm)", + "The first message is not considered a notification" : "Esimest sõnumit ei loeta teavituseks", + "Zero or empty is no reminder." : "Tühuväärtus või väärtuse puudumine tähendab meeldetuletuse puudumist.", + "off" : "välja", + "on" : "sisse", + "Turn {reminderState} auto reminders" : "Lülita automaatsed meeldetuletused {reminderState}", + "First reminder after (days)" : "Esimene meeldetuletus (päevades)", + "Days between reminders" : "Päevi meeldetuletuste vahel", + "Max reminders per signer" : "Maksimaalne meeldetuletuste arv allakirjutaja kohta", "Yes" : "Jah", "No" : "Ei", "Include certificate policy" : "Kaasa sertifikaadireeglid", diff --git a/l10n/tr.js b/l10n/tr.js index 9261eb120a..90f908bdb1 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Bu bilgiler doğrulama sayfasında görüntülenir", "Legal Information" : "Yasal bilgiler", "Reminders" : "Anımsatıcılar", - "on" : "şu gün", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "İşlemleri otomatik anımsatıcılarla izleyin. İmzalayanlara, imzalayana veya reddedene kadar anımsatıcılar gönderilir.", + "Send time (HH:mm)" : "Gönderim zamanı (HH:mm)", + "The first message is not considered a notification" : "İlk ileti bir bildirim olarak değerlendirilmez", + "Zero or empty is no reminder." : "Sıfır ya da boşluk bir anımsatıcı değildir.", + "off" : "kapat", + "on" : "aç", + "Turn {reminderState} auto reminders" : "Otomatik anımsatıcıları {reminderState}", + "First reminder after (days)" : "İlk anımsatıcının ne kadar sonra gönderileceği (gün)", + "Days between reminders" : "Anımsatıcılar arasındaki gün sayısı", + "Max reminders per signer" : "Her imzalayana gönderilecek en fazla anımsatıcı", "Root certificate data" : "Kök sertifika verileri", "To generate new signatures, you must first generate the root certificate." : "Yeni imzalar oluşturmak için, öncelikle bir kök sertifika oluşturmalısınız.", "Generate root certificate" : "Kök sertifikası oluştur", diff --git a/l10n/tr.json b/l10n/tr.json index 72d62edf0c..6e11ae2044 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Bu bilgiler doğrulama sayfasında görüntülenir", "Legal Information" : "Yasal bilgiler", "Reminders" : "Anımsatıcılar", - "on" : "şu gün", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "İşlemleri otomatik anımsatıcılarla izleyin. İmzalayanlara, imzalayana veya reddedene kadar anımsatıcılar gönderilir.", + "Send time (HH:mm)" : "Gönderim zamanı (HH:mm)", + "The first message is not considered a notification" : "İlk ileti bir bildirim olarak değerlendirilmez", + "Zero or empty is no reminder." : "Sıfır ya da boşluk bir anımsatıcı değildir.", + "off" : "kapat", + "on" : "aç", + "Turn {reminderState} auto reminders" : "Otomatik anımsatıcıları {reminderState}", + "First reminder after (days)" : "İlk anımsatıcının ne kadar sonra gönderileceği (gün)", + "Days between reminders" : "Anımsatıcılar arasındaki gün sayısı", + "Max reminders per signer" : "Her imzalayana gönderilecek en fazla anımsatıcı", "Root certificate data" : "Kök sertifika verileri", "To generate new signatures, you must first generate the root certificate." : "Yeni imzalar oluşturmak için, öncelikle bir kök sertifika oluşturmalısınız.", "Generate root certificate" : "Kök sertifikası oluştur", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index f32d532e19..f71fcc695d 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "此資訊將會顯示在驗證頁面上", "Legal Information" : "法律資訊", "Reminders" : "提醒", - "on" : "在", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "透過自動提醒功能追蹤。簽署者將在他們簽署或拒絕前持續收到提醒。", + "Send time (HH:mm)" : "傳送時間 (HH:mm)", + "The first message is not considered a notification" : "第一則訊息不被視為通知", + "Zero or empty is no reminder." : "零或空則無提醒。", + "off" : "關閉", + "on" : "開啟", + "Turn {reminderState} auto reminders" : "{reminderState}自動提醒", + "First reminder after (days)" : "首次提醒後(天數)", + "Days between reminders" : "提醒間隔天數", + "Max reminders per signer" : "每個簽署者的最大提醒數", "Root certificate data" : "根憑證資料", "To generate new signatures, you must first generate the root certificate." : "要產生新簽章,您必須先產生根憑證。", "Generate root certificate" : "產生根憑證", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 4ef99289fd..59fcef9de5 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "此資訊將會顯示在驗證頁面上", "Legal Information" : "法律資訊", "Reminders" : "提醒", - "on" : "在", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "透過自動提醒功能追蹤。簽署者將在他們簽署或拒絕前持續收到提醒。", + "Send time (HH:mm)" : "傳送時間 (HH:mm)", + "The first message is not considered a notification" : "第一則訊息不被視為通知", + "Zero or empty is no reminder." : "零或空則無提醒。", + "off" : "關閉", + "on" : "開啟", + "Turn {reminderState} auto reminders" : "{reminderState}自動提醒", + "First reminder after (days)" : "首次提醒後(天數)", + "Days between reminders" : "提醒間隔天數", + "Max reminders per signer" : "每個簽署者的最大提醒數", "Root certificate data" : "根憑證資料", "To generate new signatures, you must first generate the root certificate." : "要產生新簽章,您必須先產生根憑證。", "Generate root certificate" : "產生根憑證", From 1e2a770f214bd8572b43baff36e744462ff64854 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 16 Sep 2025 02:29:33 +0000 Subject: [PATCH 0302/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/de.js | 6 +++--- l10n/de.json | 6 +++--- l10n/de_DE.js | 2 +- l10n/de_DE.json | 2 +- l10n/ga.js | 9 +++++++++ l10n/ga.json | 9 +++++++++ l10n/sr.js | 9 +++++++++ l10n/sr.json | 9 +++++++++ l10n/uz.js | 1 + l10n/uz.json | 1 + l10n/zh_HK.js | 11 ++++++++++- l10n/zh_HK.json | 11 ++++++++++- 12 files changed, 66 insertions(+), 10 deletions(-) diff --git a/l10n/de.js b/l10n/de.js index 65814f0370..d83e41e2a5 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -379,11 +379,11 @@ OC.L10N.register( "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", - "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", - "off" : "Aus", - "on" : "am", + "off" : "aus", + "on" : "an", "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", "Days between reminders" : "Tage zwischen den Erinnerungen", diff --git a/l10n/de.json b/l10n/de.json index db6978cd63..5c4b2ff3e0 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -377,11 +377,11 @@ "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", - "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", - "off" : "Aus", - "on" : "am", + "off" : "aus", + "on" : "an", "Turn {reminderState} auto reminders" : "Auto-Erinnerungen {reminderState}-schalten", "First reminder after (days)" : "Erste Erinnerung nach (Tagen)", "Days between reminders" : "Tage zwischen den Erinnerungen", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 1c12cee63e..46535bd980 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -379,7 +379,7 @@ OC.L10N.register( "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", - "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", "off" : "Aus", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 8792ab0c48..e0cb2045ec 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -377,7 +377,7 @@ "Legal Information" : "Rechtliche Informationen", "Reminders" : "Erinnerungen", "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Dranbleiben mit automatischen Erinnerungen. Unterzeichner erhalten Erinnerungen, bis sie unterschreiben oder ablehnen.", - "Send time (HH:mm)" : "Sendezeit (HH:mm)", + "Send time (HH:mm)" : "Sendezeit (HH:mm)", "The first message is not considered a notification" : "Die erste Nachricht gilt nicht als Benachrichtigung", "Zero or empty is no reminder." : "Null oder lehr bedeutet keine Erinnerung.", "off" : "Aus", diff --git a/l10n/ga.js b/l10n/ga.js index 37df58acc3..6813db2052 100644 --- a/l10n/ga.js +++ b/l10n/ga.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Beidh an fhaisnéis seo le feiceáil ar an leathanach bailíochtaithe", "Legal Information" : "Eolas Dlí", "Reminders" : "Meabhrúcháin", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Lean suas le meabhrúcháin uathoibríocha. Gheobhaidh sínitheoirí meabhrúcháin go dtí go síneoidh siad nó go ndiúltóidh siad.", + "Send time (HH:mm)" : "Am seolta (UU:nn)", + "The first message is not considered a notification" : "Ní mheastar gur fógra an chéad teachtaireacht", + "Zero or empty is no reminder." : "Ní meabhrúchán é nialas ná folamh.", + "off" : "as", "on" : "ar", + "Turn {reminderState} auto reminders" : "Cas meabhrúcháin uathoibríocha {reminderState}", + "First reminder after (days)" : "An chéad meabhrúchán tar éis (laethanta)", + "Days between reminders" : "Laethanta idir meabhrúcháin", + "Max reminders per signer" : "Uasmhéid meabhrúchán in aghaidh an tsínitheora", "Root certificate data" : "Sonraí deimhnithe root", "To generate new signatures, you must first generate the root certificate." : "Chun sínithe nua a ghiniúint, ní mór duit an teastas fréimhe a ghiniúint ar dtús.", "Generate root certificate" : "Gin teastas fréimhe", diff --git a/l10n/ga.json b/l10n/ga.json index 5e3e3765dd..58c6d674f5 100644 --- a/l10n/ga.json +++ b/l10n/ga.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Beidh an fhaisnéis seo le feiceáil ar an leathanach bailíochtaithe", "Legal Information" : "Eolas Dlí", "Reminders" : "Meabhrúcháin", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Lean suas le meabhrúcháin uathoibríocha. Gheobhaidh sínitheoirí meabhrúcháin go dtí go síneoidh siad nó go ndiúltóidh siad.", + "Send time (HH:mm)" : "Am seolta (UU:nn)", + "The first message is not considered a notification" : "Ní mheastar gur fógra an chéad teachtaireacht", + "Zero or empty is no reminder." : "Ní meabhrúchán é nialas ná folamh.", + "off" : "as", "on" : "ar", + "Turn {reminderState} auto reminders" : "Cas meabhrúcháin uathoibríocha {reminderState}", + "First reminder after (days)" : "An chéad meabhrúchán tar éis (laethanta)", + "Days between reminders" : "Laethanta idir meabhrúcháin", + "Max reminders per signer" : "Uasmhéid meabhrúchán in aghaidh an tsínitheora", "Root certificate data" : "Sonraí deimhnithe root", "To generate new signatures, you must first generate the root certificate." : "Chun sínithe nua a ghiniúint, ní mór duit an teastas fréimhe a ghiniúint ar dtús.", "Generate root certificate" : "Gin teastas fréimhe", diff --git a/l10n/sr.js b/l10n/sr.js index 01b87349eb..7c7f012e77 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Ове информације ће се појавити на страници за потврђивање", "Legal Information" : "Правне информације", "Reminders" : "Подсетници", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Праћење са аутоматским подсетницима. Потписници ће примати подсетнике све док не потпишу или одбију.", + "Send time (HH:mm)" : "Време слања (ЧЧ:мм)", + "The first message is not considered a notification" : "Прва порука се не сматра за обваештење", + "Zero or empty is no reminder." : "Нула или празно значи без подсетника.", + "off" : "искључени", "on" : "дана", + "Turn {reminderState} auto reminders" : "Аутоматски подсетници су {reminderState}", + "First reminder after (days)" : "Први подсетник након (дана)", + "Days between reminders" : "Дана између подсетника", + "Max reminders per signer" : "Максимални број подсетника по потписнику", "Root certificate data" : "Подаци кореног сертификата", "To generate new signatures, you must first generate the root certificate." : "Да бисте генерисали нове потписе, најпре морате да генеришете корени сертификат.", "Generate root certificate" : "Генериши корени сертификат", diff --git a/l10n/sr.json b/l10n/sr.json index 6203b2176a..b7d00c1d08 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Ове информације ће се појавити на страници за потврђивање", "Legal Information" : "Правне информације", "Reminders" : "Подсетници", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Праћење са аутоматским подсетницима. Потписници ће примати подсетнике све док не потпишу или одбију.", + "Send time (HH:mm)" : "Време слања (ЧЧ:мм)", + "The first message is not considered a notification" : "Прва порука се не сматра за обваештење", + "Zero or empty is no reminder." : "Нула или празно значи без подсетника.", + "off" : "искључени", "on" : "дана", + "Turn {reminderState} auto reminders" : "Аутоматски подсетници су {reminderState}", + "First reminder after (days)" : "Први подсетник након (дана)", + "Days between reminders" : "Дана између подсетника", + "Max reminders per signer" : "Максимални број подсетника по потписнику", "Root certificate data" : "Подаци кореног сертификата", "To generate new signatures, you must first generate the root certificate." : "Да бисте генерисали нове потписе, најпре морате да генеришете корени сертификат.", "Generate root certificate" : "Генериши корени сертификат", diff --git a/l10n/uz.js b/l10n/uz.js index eb63ff2f8f..1864607e99 100644 --- a/l10n/uz.js +++ b/l10n/uz.js @@ -13,6 +13,7 @@ OC.L10N.register( "A PHP extension stopped the file upload" : "PHP kengaytmasi faylni yuklashni to'xtatdi", "Internal Server Error" : "Serverdagi ichki xatolik", "File is too big" : "File is too big", + "View" : "Ko'rish", "File not found" : "File not found", "Invalid file provided" : "Invalid file provided", "Account" : "Akkaunt", diff --git a/l10n/uz.json b/l10n/uz.json index 7419b58b5d..caba85ac47 100644 --- a/l10n/uz.json +++ b/l10n/uz.json @@ -11,6 +11,7 @@ "A PHP extension stopped the file upload" : "PHP kengaytmasi faylni yuklashni to'xtatdi", "Internal Server Error" : "Serverdagi ichki xatolik", "File is too big" : "File is too big", + "View" : "Ko'rish", "File not found" : "File not found", "Invalid file provided" : "Invalid file provided", "Account" : "Akkaunt", diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js index cde94d513e..e283f68d40 100644 --- a/l10n/zh_HK.js +++ b/l10n/zh_HK.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "此資訊將顯示在驗證頁面上", "Legal Information" : "法律資訊", "Reminders" : "提醒", - "on" : "在", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "透過自動提醒功能追蹤。簽署者將在他們簽署或拒絕前持續收到提醒。", + "Send time (HH:mm)" : "傳送時間 (HH:mm)", + "The first message is not considered a notification" : "第一則訊息不被視為通知", + "Zero or empty is no reminder." : "零或空的則無提醒。", + "off" : "關閉", + "on" : "開啟", + "Turn {reminderState} auto reminders" : "{reminderState}自動提醒", + "First reminder after (days)" : "第一次提醒將在 X 天後發送", + "Days between reminders" : "提醒間隔天數", + "Max reminders per signer" : "每個簽署者的最大提醒數", "Root certificate data" : "根證書資料", "To generate new signatures, you must first generate the root certificate." : "要生成新簽署,必須首先生成根證書。", "Generate root certificate" : "生成根證書", diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json index b9a79057b4..52d1145539 100644 --- a/l10n/zh_HK.json +++ b/l10n/zh_HK.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "此資訊將顯示在驗證頁面上", "Legal Information" : "法律資訊", "Reminders" : "提醒", - "on" : "在", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "透過自動提醒功能追蹤。簽署者將在他們簽署或拒絕前持續收到提醒。", + "Send time (HH:mm)" : "傳送時間 (HH:mm)", + "The first message is not considered a notification" : "第一則訊息不被視為通知", + "Zero or empty is no reminder." : "零或空的則無提醒。", + "off" : "關閉", + "on" : "開啟", + "Turn {reminderState} auto reminders" : "{reminderState}自動提醒", + "First reminder after (days)" : "第一次提醒將在 X 天後發送", + "Days between reminders" : "提醒間隔天數", + "Max reminders per signer" : "每個簽署者的最大提醒數", "Root certificate data" : "根證書資料", "To generate new signatures, you must first generate the root certificate." : "要生成新簽署,必須首先生成根證書。", "Generate root certificate" : "生成根證書", From f17c613dfc6fd0392457263fdf1c636da755a160 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 17 Sep 2025 02:29:24 +0000 Subject: [PATCH 0303/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 1 + l10n/be.json | 1 + l10n/pt_BR.js | 11 ++++++++++- l10n/pt_BR.json | 11 ++++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/l10n/be.js b/l10n/be.js index f08b6c2f2c..93f9aa8ae8 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -42,6 +42,7 @@ OC.L10N.register( "Sign" : "Знак", "Confirm" : "Пацвердзіць", "Open file" : "Адкрыць файл", + "Administration" : "Адміністратар", "pending" : "у чаканні", "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", diff --git a/l10n/be.json b/l10n/be.json index 1ac5bd79ed..a613158e98 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -40,6 +40,7 @@ "Sign" : "Знак", "Confirm" : "Пацвердзіць", "Open file" : "Адкрыць файл", + "Administration" : "Адміністратар", "pending" : "у чаканні", "Details" : "Падрабязнасці", "Certificate" : "Сертыфікат", diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index f25f311e94..f8ed913e99 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Esta informação aparecerá na página de validação ", "Legal Information" : "Informação Legal", "Reminders" : "Lembretes", - "on" : "ligado", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Acompanhe com lembretes automáticos. Os signatários receberão lembretes até que assinem ou recusem.", + "Send time (HH:mm)" : "Hora de envio (HH:mm)", + "The first message is not considered a notification" : "A primeira mensagem não é considerada uma notificação.", + "Zero or empty is no reminder." : "Zero ou vazio significa que não há lembrete.", + "off" : "Desativar", + "on" : "Ativar", + "Turn {reminderState} auto reminders" : "{reminderState} os lembretes automáticos", + "First reminder after (days)" : "Primeiro lembrete após (dias)", + "Days between reminders" : "Dias entre lembretes", + "Max reminders per signer" : "Máximo de lembretes por signatário", "Root certificate data" : "Dados do certificado raiz", "To generate new signatures, you must first generate the root certificate." : "Para gerar novas assinaturas, você precisa primeiro gerar o certificado raiz.", "Generate root certificate" : "Gerar certificado raiz", diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index 3115007377..35cd13a189 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "Esta informação aparecerá na página de validação ", "Legal Information" : "Informação Legal", "Reminders" : "Lembretes", - "on" : "ligado", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Acompanhe com lembretes automáticos. Os signatários receberão lembretes até que assinem ou recusem.", + "Send time (HH:mm)" : "Hora de envio (HH:mm)", + "The first message is not considered a notification" : "A primeira mensagem não é considerada uma notificação.", + "Zero or empty is no reminder." : "Zero ou vazio significa que não há lembrete.", + "off" : "Desativar", + "on" : "Ativar", + "Turn {reminderState} auto reminders" : "{reminderState} os lembretes automáticos", + "First reminder after (days)" : "Primeiro lembrete após (dias)", + "Days between reminders" : "Dias entre lembretes", + "Max reminders per signer" : "Máximo de lembretes por signatário", "Root certificate data" : "Dados do certificado raiz", "To generate new signatures, you must first generate the root certificate." : "Para gerar novas assinaturas, você precisa primeiro gerar o certificado raiz.", "Generate root certificate" : "Gerar certificado raiz", From 3172e7ac714442d3170e77dfb2b47f519bfd3aad Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 19 Sep 2025 02:32:49 +0000 Subject: [PATCH 0304/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/cs.js | 9 +++++++++ l10n/cs.json | 9 +++++++++ l10n/el.js | 3 +++ l10n/el.json | 3 +++ l10n/en_GB.js | 9 +++++++++ l10n/en_GB.json | 9 +++++++++ l10n/sw.js | 1 + l10n/sw.json | 1 + 8 files changed, 44 insertions(+) diff --git a/l10n/cs.js b/l10n/cs.js index 4408d0e926..ee468ba552 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -136,6 +136,8 @@ OC.L10N.register( "Name of a locality or place, such as a city, county, or other geographic region" : "Název lokality nebo místa, jako např. města, kraje nebo jiného geografického regionu", "Name of an organization" : "Název organizace", "Name of an organizational unit" : "Název organizační jednotky", + "Parameter '%s' is required!" : "Parametry „%s“ je třeba vyplnit!", + "Parameter '%s' should be betweeen %s and %s." : "Parametr „%s“ by měl být z rozmezí %s až %s.", "Invalid OID format. Expected pattern: %s" : "Neplatný formát OID. Očekávaný vzorec: %s", "Invalid file identifier" : "Neplatný identifikátor souboru", "No file provided" : "Neposkytnut žádný soubor", @@ -375,7 +377,14 @@ OC.L10N.register( "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", "Reminders" : "Připomínky", + "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", + "The first message is not considered a notification" : "První zpráva není považována za upozornění", + "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", "on" : "v", + "Turn {reminderState} auto reminders" : " {reminderState} automatické připomínky", + "First reminder after (days)" : "První připomínka po uplynutí (dnů)", + "Days between reminders" : "Dnů mezi připomínkami", + "Max reminders per signer" : "Nejvýše připomínek pro jednotlivého podepisujícího", "Root certificate data" : "Data kořenového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pro vytváření nových podpisů je třeba nejprve vytvořit kořenový certifikát.", "Generate root certificate" : "Vytvořit kořenový certifikát", diff --git a/l10n/cs.json b/l10n/cs.json index a2adffc988..519a0bcc0d 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -134,6 +134,8 @@ "Name of a locality or place, such as a city, county, or other geographic region" : "Název lokality nebo místa, jako např. města, kraje nebo jiného geografického regionu", "Name of an organization" : "Název organizace", "Name of an organizational unit" : "Název organizační jednotky", + "Parameter '%s' is required!" : "Parametry „%s“ je třeba vyplnit!", + "Parameter '%s' should be betweeen %s and %s." : "Parametr „%s“ by měl být z rozmezí %s až %s.", "Invalid OID format. Expected pattern: %s" : "Neplatný formát OID. Očekávaný vzorec: %s", "Invalid file identifier" : "Neplatný identifikátor souboru", "No file provided" : "Neposkytnut žádný soubor", @@ -373,7 +375,14 @@ "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", "Reminders" : "Připomínky", + "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", + "The first message is not considered a notification" : "První zpráva není považována za upozornění", + "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", "on" : "v", + "Turn {reminderState} auto reminders" : " {reminderState} automatické připomínky", + "First reminder after (days)" : "První připomínka po uplynutí (dnů)", + "Days between reminders" : "Dnů mezi připomínkami", + "Max reminders per signer" : "Nejvýše připomínek pro jednotlivého podepisujícího", "Root certificate data" : "Data kořenového certifikátu", "To generate new signatures, you must first generate the root certificate." : "Pro vytváření nových podpisů je třeba nejprve vytvořit kořenový certifikát.", "Generate root certificate" : "Vytvořit kořenový certifikát", diff --git a/l10n/el.js b/l10n/el.js index e0aa9eeb77..59fff016de 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -87,6 +87,7 @@ OC.L10N.register( "Page not found" : "Δεν βρέθηκε η σελίδα", "Ok" : "ΟΚ", "Toggle selection for file \"{displayName}\"" : "Εναλλαγή επιλογής για το αρχείο \"{displayName}\"", + "File is loading" : "Το αρχείο φορτώνεται", "Clear filter" : "Εκκαθάριση φίλτρου", "Today" : "Σήμερα", "Last 7 days" : "Τελευταίες 7 ημέρες", @@ -105,6 +106,8 @@ OC.L10N.register( "\"{displayName}\" failed on some elements " : "\"{displayName}\" απέτυχε σε ορισμένα στοιχεία", "\"{displayName}\" batch action executed successfully" : "Η μαζική ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς", "\"{displayName}\" action failed" : "Η ενέργεια του \"{displayName}\" απέτυχε", + "(selected)" : "(επιλεγμένα)", + "_{count} selected_::_{count} selected_" : ["{count} επιλεγμένο","{count} επιλεγμένα"], "Password reset" : "Επαναφορά κωδικού", "Enter new password and then repeat it" : "Εισάγετε νέο συνθηματικό και μετά επαναλάβετέ το", "Current password" : "Τρέχον συνθηματικό", diff --git a/l10n/el.json b/l10n/el.json index 9ac489d9b0..203d1374cb 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -85,6 +85,7 @@ "Page not found" : "Δεν βρέθηκε η σελίδα", "Ok" : "ΟΚ", "Toggle selection for file \"{displayName}\"" : "Εναλλαγή επιλογής για το αρχείο \"{displayName}\"", + "File is loading" : "Το αρχείο φορτώνεται", "Clear filter" : "Εκκαθάριση φίλτρου", "Today" : "Σήμερα", "Last 7 days" : "Τελευταίες 7 ημέρες", @@ -103,6 +104,8 @@ "\"{displayName}\" failed on some elements " : "\"{displayName}\" απέτυχε σε ορισμένα στοιχεία", "\"{displayName}\" batch action executed successfully" : "Η μαζική ενέργεια του/της \"{displayName}\" εκτελέστηκε επιτυχώς", "\"{displayName}\" action failed" : "Η ενέργεια του \"{displayName}\" απέτυχε", + "(selected)" : "(επιλεγμένα)", + "_{count} selected_::_{count} selected_" : ["{count} επιλεγμένο","{count} επιλεγμένα"], "Password reset" : "Επαναφορά κωδικού", "Enter new password and then repeat it" : "Εισάγετε νέο συνθηματικό και μετά επαναλάβετέ το", "Current password" : "Τρέχον συνθηματικό", diff --git a/l10n/en_GB.js b/l10n/en_GB.js index 55ae893a50..13c1d4567b 100644 --- a/l10n/en_GB.js +++ b/l10n/en_GB.js @@ -378,7 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", "Reminders" : "Reminders", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Follow up with automatic reminders. Signers will receive reminders until they sign or decline.", + "Send time (HH:mm)" : "Send time (HH:mm)", + "The first message is not considered a notification" : "The first message is not considered a notification", + "Zero or empty is no reminder." : "Zero or empty is no reminder.", + "off" : "off", "on" : "on", + "Turn {reminderState} auto reminders" : "Turn {reminderState} auto reminders", + "First reminder after (days)" : "First reminder after (days)", + "Days between reminders" : "Days between reminders", + "Max reminders per signer" : "Max reminders per signer", "Root certificate data" : "Root certificate data", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generate root certificate" : "Generate root certificate", diff --git a/l10n/en_GB.json b/l10n/en_GB.json index 4da3652820..8ce6e38803 100644 --- a/l10n/en_GB.json +++ b/l10n/en_GB.json @@ -376,7 +376,16 @@ "This information will appear on the validation page" : "This information will appear on the validation page", "Legal Information" : "Legal Information", "Reminders" : "Reminders", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Follow up with automatic reminders. Signers will receive reminders until they sign or decline.", + "Send time (HH:mm)" : "Send time (HH:mm)", + "The first message is not considered a notification" : "The first message is not considered a notification", + "Zero or empty is no reminder." : "Zero or empty is no reminder.", + "off" : "off", "on" : "on", + "Turn {reminderState} auto reminders" : "Turn {reminderState} auto reminders", + "First reminder after (days)" : "First reminder after (days)", + "Days between reminders" : "Days between reminders", + "Max reminders per signer" : "Max reminders per signer", "Root certificate data" : "Root certificate data", "To generate new signatures, you must first generate the root certificate." : "To generate new signatures, you must first generate the root certificate.", "Generate root certificate" : "Generate root certificate", diff --git a/l10n/sw.js b/l10n/sw.js index 7261cfb8a4..dfca6868f7 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -76,6 +76,7 @@ OC.L10N.register( "(selected)" : "(iliyochaguliwa)", "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], "Password reset" : "Uwekaji mpya wa nenosiri", + "Current password" : "Current password", "New password" : "Nenosiri jipya", "Remove" : "Ondoa", "Message" : "Message", diff --git a/l10n/sw.json b/l10n/sw.json index 0143be1987..c2133df68b 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -74,6 +74,7 @@ "(selected)" : "(iliyochaguliwa)", "_{count} selected_::_{count} selected_" : ["{count} selected","{count} selected"], "Password reset" : "Uwekaji mpya wa nenosiri", + "Current password" : "Current password", "New password" : "Nenosiri jipya", "Remove" : "Ondoa", "Message" : "Message", From 4f183c09a59cce603934f3ce5057967cac60fa3f Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 20 Sep 2025 02:33:34 +0000 Subject: [PATCH 0305/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/cs.js | 1 + l10n/cs.json | 1 + l10n/gl.js | 1 + l10n/gl.json | 1 + l10n/ja.js | 3 +++ l10n/ja.json | 3 +++ l10n/sw.js | 1 + l10n/sw.json | 1 + 8 files changed, 12 insertions(+) diff --git a/l10n/cs.js b/l10n/cs.js index ee468ba552..e5d5b0d96c 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -377,6 +377,7 @@ OC.L10N.register( "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", "Reminders" : "Připomínky", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Následovat automatickými připomínkami. Podepisující budou dostávat připomínky dokud nepodepíší nebo neodmítnou.", "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", "The first message is not considered a notification" : "První zpráva není považována za upozornění", "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", diff --git a/l10n/cs.json b/l10n/cs.json index 519a0bcc0d..0a3f53652c 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -375,6 +375,7 @@ "This information will appear on the validation page" : "Tato informace se objeví na stránce ověřování", "Legal Information" : "Právní informace", "Reminders" : "Připomínky", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Následovat automatickými připomínkami. Podepisující budou dostávat připomínky dokud nepodepíší nebo neodmítnou.", "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", "The first message is not considered a notification" : "První zpráva není považována za upozornění", "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", diff --git a/l10n/gl.js b/l10n/gl.js index 340842a160..c473213933 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -178,6 +178,7 @@ OC.L10N.register( "Document already signed" : "O documento xa está asinado", "Sending authorization code not enabled." : "O envío do código de autorización non está activado.", "File already signed by you" : "Ficheiro xa asinado por Vde.", + "Invalid template font size. The value must be between %.1f and %.0f." : "O tamaño da letra do modelo non é válido. O valor debe estar entre %.1f e %.0f.", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", diff --git a/l10n/gl.json b/l10n/gl.json index 649fc10312..2be55a123f 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -176,6 +176,7 @@ "Document already signed" : "O documento xa está asinado", "Sending authorization code not enabled." : "O envío do código de autorización non está activado.", "File already signed by you" : "Ficheiro xa asinado por Vde.", + "Invalid template font size. The value must be between %.1f and %.0f." : "O tamaño da letra do modelo non é válido. O valor debe estar entre %.1f e %.0f.", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", diff --git a/l10n/ja.js b/l10n/ja.js index 49265051cc..7adfa23a32 100644 --- a/l10n/ja.js +++ b/l10n/ja.js @@ -40,6 +40,7 @@ OC.L10N.register( "Delete" : "削除", "Save" : "保存", "Cancel" : "キャンセル", + "Request" : "リクエスト", "Files" : "ファイル", "Settings" : "設定", "Loading …" : "読み込み中…", @@ -67,6 +68,7 @@ OC.L10N.register( "Change password" : "パスワードを変更", "Signature" : "署名", "Profile picture" : "プロフィール画像", + "Your password must be greater than 4 digits" : "パスワードは4桁以上である必要があります", "Create account" : "アカウント作成", "Password" : "パスワード", "Confirm password" : "パスワードを確認", @@ -105,6 +107,7 @@ OC.L10N.register( "Resource" : "リソース", "Dependencies" : "依存関係", "Reminders" : "リマインダー", + "off" : "オフ", "on" : "曜日", "Yes" : "はい", "No" : "いいえ", diff --git a/l10n/ja.json b/l10n/ja.json index 6f9c27689d..aa7430758e 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -38,6 +38,7 @@ "Delete" : "削除", "Save" : "保存", "Cancel" : "キャンセル", + "Request" : "リクエスト", "Files" : "ファイル", "Settings" : "設定", "Loading …" : "読み込み中…", @@ -65,6 +66,7 @@ "Change password" : "パスワードを変更", "Signature" : "署名", "Profile picture" : "プロフィール画像", + "Your password must be greater than 4 digits" : "パスワードは4桁以上である必要があります", "Create account" : "アカウント作成", "Password" : "パスワード", "Confirm password" : "パスワードを確認", @@ -103,6 +105,7 @@ "Resource" : "リソース", "Dependencies" : "依存関係", "Reminders" : "リマインダー", + "off" : "オフ", "on" : "曜日", "Yes" : "はい", "No" : "いいえ", diff --git a/l10n/sw.js b/l10n/sw.js index dfca6868f7..1fdd7e8dea 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -51,6 +51,7 @@ OC.L10N.register( "Status" : "Wadhifa", "Actions" : "Utendekaji", "Signature" : "Saini", + "Create account" : "Tengeneza akaunti", "Password" : "Nenosiri", "Enter a password" : "Ingiza nenosiri", "Page not found" : "Ukurasa haupatikani", diff --git a/l10n/sw.json b/l10n/sw.json index c2133df68b..c00fc432cc 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -49,6 +49,7 @@ "Status" : "Wadhifa", "Actions" : "Utendekaji", "Signature" : "Saini", + "Create account" : "Tengeneza akaunti", "Password" : "Nenosiri", "Enter a password" : "Ingiza nenosiri", "Page not found" : "Ukurasa haupatikani", From 11335abd580717ce6641b3284d1c14dabd832b66 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 21 Sep 2025 02:31:41 +0000 Subject: [PATCH 0306/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/gl.js | 7 +++++++ l10n/gl.json | 7 +++++++ l10n/sw.js | 1 + l10n/sw.json | 1 + 4 files changed, 16 insertions(+) diff --git a/l10n/gl.js b/l10n/gl.js index c473213933..1187219373 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -179,6 +179,9 @@ OC.L10N.register( "Sending authorization code not enabled." : "O envío do código de autorización non está activado.", "File already signed by you" : "Ficheiro xa asinado por Vde.", "Invalid template font size. The value must be between %.1f and %.0f." : "O tamaño da letra do modelo non é válido. O valor debe estar entre %.1f e %.0f.", + "Invalid signature font size. The value must be between %.1f and %.0f." : "O tamaño da letra da sinatura non é válido.. O valor debe estar entre %.1f e %.0f.", + "Unique identifier of the signed document" : "Identificador único do documento asinado", + "Name of the certificate issuer used for the signature." : "Nome do emisor do certificado utilizado para a sinatura.", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", @@ -378,11 +381,15 @@ OC.L10N.register( "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", "Reset to default" : "Restabelecer os valores predeterminados", + "Upload new background image" : "Enviar unha nova imaxe de fondo", "Remove background" : "Retirar o fondo", + "Zoom level" : "Nivel de achegamento", + "If no background image or signature template is provided, no visible signature will be added to the document." : "Se non se fornece ningunha imaxe de fondo ou modelo de sinatura, non se engadirá ningunha sinatura visíbel ao documento.", "Validation URL" : "URL de validación", "Make validation URL acessible only by authenticated users" : "Facer que o URL de validación só sexa accesíbel aos usuarios autenticados", "Add visible footer with signature details" : "Engadir un rodapé visíbel cos detalles da sinatura", "Write QR code on footer with validation URL" : "Escriba o código QR no rodapé co URL de validación", + "To validate the signature of the documents. Only change this value if you want to replace the default validation URL with a different one." : "Para validar a sinatura dos documentos. Cambie só este valor se quere substituír o URL de validación predeterminado por outro.", "Sign with your email." : "Asine co seu correo-e.", "Enter the code you received" : "Introduza o código que recibiu", "Enter your code" : "Introduza o seu código", diff --git a/l10n/gl.json b/l10n/gl.json index 2be55a123f..e9b39de1c1 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -177,6 +177,9 @@ "Sending authorization code not enabled." : "O envío do código de autorización non está activado.", "File already signed by you" : "Ficheiro xa asinado por Vde.", "Invalid template font size. The value must be between %.1f and %.0f." : "O tamaño da letra do modelo non é válido. O valor debe estar entre %.1f e %.0f.", + "Invalid signature font size. The value must be between %.1f and %.0f." : "O tamaño da letra da sinatura non é válido.. O valor debe estar entre %.1f e %.0f.", + "Unique identifier of the signed document" : "Identificador único do documento asinado", + "Name of the certificate issuer used for the signature." : "Nome do emisor do certificado utilizado para a sinatura.", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", @@ -376,11 +379,15 @@ "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", "Reset to default" : "Restabelecer os valores predeterminados", + "Upload new background image" : "Enviar unha nova imaxe de fondo", "Remove background" : "Retirar o fondo", + "Zoom level" : "Nivel de achegamento", + "If no background image or signature template is provided, no visible signature will be added to the document." : "Se non se fornece ningunha imaxe de fondo ou modelo de sinatura, non se engadirá ningunha sinatura visíbel ao documento.", "Validation URL" : "URL de validación", "Make validation URL acessible only by authenticated users" : "Facer que o URL de validación só sexa accesíbel aos usuarios autenticados", "Add visible footer with signature details" : "Engadir un rodapé visíbel cos detalles da sinatura", "Write QR code on footer with validation URL" : "Escriba o código QR no rodapé co URL de validación", + "To validate the signature of the documents. Only change this value if you want to replace the default validation URL with a different one." : "Para validar a sinatura dos documentos. Cambie só este valor se quere substituír o URL de validación predeterminado por outro.", "Sign with your email." : "Asine co seu correo-e.", "Enter the code you received" : "Introduza o código que recibiu", "Enter your code" : "Introduza o seu código", diff --git a/l10n/sw.js b/l10n/sw.js index 1fdd7e8dea..05fc1f377f 100644 --- a/l10n/sw.js +++ b/l10n/sw.js @@ -89,6 +89,7 @@ OC.L10N.register( "Remove background" : "Remove background", "Forgot password?" : "Umesahau nenosiri", "Name:" : "Jina:", + "Status:" : "Status:", "Return" : "Rudi" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/sw.json b/l10n/sw.json index c00fc432cc..68bd90c738 100644 --- a/l10n/sw.json +++ b/l10n/sw.json @@ -87,6 +87,7 @@ "Remove background" : "Remove background", "Forgot password?" : "Umesahau nenosiri", "Name:" : "Jina:", + "Status:" : "Status:", "Return" : "Rudi" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file From 3d834dae28a27ad49ea213d489c6d16021df5574 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Mon, 22 Sep 2025 02:34:21 +0000 Subject: [PATCH 0307/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/gl.js | 41 +++++++++++++++++++++++++++++++++++++++++ l10n/gl.json | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/l10n/gl.js b/l10n/gl.js index 1187219373..73fb8eb17e 100644 --- a/l10n/gl.js +++ b/l10n/gl.js @@ -182,6 +182,17 @@ OC.L10N.register( "Invalid signature font size. The value must be between %.1f and %.0f." : "O tamaño da letra da sinatura non é válido.. O valor debe estar entre %.1f e %.0f.", "Unique identifier of the signed document" : "Identificador único do documento asinado", "Name of the certificate issuer used for the signature." : "Nome do emisor do certificado utilizado para a sinatura.", + "Date when the signer sent the request to sign (without time, in their local time zone)." : "Data na que o asinante enviou a solicitude para asinar (sen hora, no seu fuso horario local).", + "Date and time when the signer sent the request to sign (in their local time zone)." : "Data e hora na que o asinante enviou a solicitude para asinar (no seu fuso horario local).", + "Time zone of signer when sent the request to sign (in their local time zone)." : "Fuso horario do asinante cando enviou a solicitude para asinar (no seu fuso horario local).", + "Date and time when the signature was applied on the server. Cannot be formatted using Twig." : "Data e hora en que se aplicou a sinatura no servidor. Non pode ser formatada empregando Twig.", + "Common Name (CN) used to identify the document signer." : "Nome común (CN) usado para identificar o asinante do documento.", + "The signer's email is optional and can be left blank." : "O correo-e do asinante é opcional e pódese deixar en branco.", + "Unique information used to identify the signer (such as email, phone number, or username)." : "Información única empregada para identificar ao asinante (como correo-e, número de teléfono ou nome de usuario).", + "IP address of the person who signed the document." : "Enderezo IP da persoa que asinou o documento.", + "Browser and device information of the person who signed the document." : "Información do navegador e do dispositivo da persoa que asinou o documento.", + "Signed with LibreSign\n{{SignerCommonName}}\nIssuer: {{IssuerCommonName}}\nDate: {{ServerSignatureDate}}\nIP: {{SignerIP}}\nUser agent: {{SignerUserAgent}}" : "Asinado con LibreSign\n{{SignerCommonName}}\nEmisor: {{IssuerCommonName}}\nData: {{ServerSignatureDate}}\nIP: {{SignerIP}}\nAxente de usuario: {{SignerUserAgent}}", + "Signed with LibreSign\n{{SignerCommonName}}\nIssuer: {{IssuerCommonName}}\nDate: {{ServerSignatureDate}}" : "Asinado con LibreSign\n{{SignerCommonName}}\nEmisor: {{IssuerCommonName}}\nData: {{ServerSignatureDate}}", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", @@ -223,11 +234,13 @@ OC.L10N.register( "Send" : "Enviar", "Previous" : "Anterior", "Next" : "Seguinte", + "Account does not exist" : "A conta non existe", "Select a signer to set their signature position" : "Seleccione un asinante para definir a posición da súa sinatura", "Click on the place you want to add." : "Prema no lugar que quere engadir.", "Sign" : "Asinar", "Confirm" : "Confirmar", "Request signatures?" : "Solicitar sinaturas?", + "Edit visible signatures" : "Editar sinaturas visíbeis", "Add signer" : "Engadir asinante", "Send reminder" : "Enviar lembrete", "Open file" : "Abrir ficheiro", @@ -256,7 +269,9 @@ OC.L10N.register( "Change password" : "Cambiar o contrasinal", "Your signatures" : "As súas sinaturas", "Signature" : "Sinatura", + "No signature, click here to create a new one" : "Sen sinatura, prema aquí para crear unha nova", "Initials" : "Iniciais", + "No initials, click here to create a new one" : "Sen iniciais, prema aquí para crear unha nova", "Profile picture" : "Imaxe do perfil", "This is not a valid email" : "Este non é un correo-e válido", "The email entered is not the same as the email in the invitation" : "O correo-e introducido non é o mesmo que o correo-e do convite", @@ -324,6 +339,8 @@ OC.L10N.register( "Certificate engine" : "Motor de certificados", "Select the certificate engine to generate the root certificate" : "Seleccione o motor de certificados para xerar o certificado raíz", "I will not use root certificate" : "Non vou usar o certificado raíz", + "Certificate Policy OID" : "OID da Política de Certificación", + "Upload Certification Practice Statement (CPS) PDF" : "Enviar o PDF da Declaración de Prácticas de Certificación (DPC) PDF", "Remove" : "Retirar", "Collect signers' metadata" : "Recoller os metadatos dos asinantes", "Enabling this feature, every time a document is signed, LibreSign will store the IP address and user agent of the signer." : "Ao activar esta función, cada vez que se asine un documento, LibreSign almacenará o enderezo IP e o axente de usuario do asinante.", @@ -349,7 +366,9 @@ OC.L10N.register( "The length of time for which the generated certificate will be valid, in days." : "O período de vixencia do certificado xerado, en días.", "Expiration in days" : "Caducidade en días", "Identification documents" : "Documentos identificativos", + "The flow of identification documents will make it mandatory for anyone who must sign a file, to send their identification documents, this, in order for them to be approved by some member of the approval group. The user can only create the certificate after these are approved." : "O fluxo de documentos de identificación fará obrigatorio que calquera persoa que deba asinar un expediente, enviar os seus documentos de identificación, isto, para que sexan aprobados por algún membro do grupo de aprobación. O usuario só poderá crear o certificado após que estean aprobados.", "Enable identification documents flow" : "Activar o fluxo de documentos de identificación", + "Select authorized groups that can request to sign documents. Admin group is the default group and doesn't need to be defined." : "Seleccione os grupos autorizados que poderán solicitar asinar documentos. O grupo de administración é o grupo predeterminado e non é necesario definilo.", "Identification factors" : "Factores de identificación", "Ways to identify a person who will sign a document." : "Formas de identificar a persoa que asinará un documento.", "Request to create account when the user does not have an account" : "Solicitude de creación dunha conta cando o usuario non teña unha conta", @@ -359,10 +378,16 @@ OC.L10N.register( "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", "Reminders" : "Lembretes", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Seguimento con lembretes automáticos. Os asinantes recibirán lembretes ata que asinen ou declinen.", + "Send time (HH:mm)" : "Hora de envío (HH:mm)", + "The first message is not considered a notification" : "A primeira mensaxe non se considera unha notificación", "Zero or empty is no reminder." : "Cero ou baleiro non é lembrete.", "off" : "apagado", "on" : "activado", "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} os lembretes automáticos", + "First reminder after (days)" : "Primeiro lembrete após (días)", + "Days between reminders" : "Días entre lembretes", + "Max reminders per signer" : "Máximo de lembretes por asinante", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", @@ -376,11 +401,27 @@ OC.L10N.register( "Yes" : "Si", "No" : "Non", "Full name of the main company or main user of this instance" : "Nome completo da empresa principal ou usuario principal desta instancia", + "Include certificate policy" : "Incluír a política de certificación", "Define custom values to use {engine}" : "Defina os valores personalizados para usar {engine}", "Not mandatory, leave blank to use the default value." : "Non é obrigatorio, déixeo baleiro para usar o valor predeterminado.", "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", + "Signature stamp" : "Selo da sinatura", + "Configure the content displayed with the signature. The text template uses Twig syntax." : "Configurar o contido que se amosa coa sinatura. O modelo de texto emprega a sintaxe de Twig.", + "Signature image here" : "Imaxe da sinatura aquí", + "Signature template content is overflowing. Reduce the text." : "O contido do modelo de sinatura desborda as marxes. Reduza o texto.", + "Display signature mode" : "Amosar o modo de sinatura", + "Description only" : "Só a descrición", + "Signature and description" : "Sinatura e descrición", + "Signer name and description" : "Nome do asinante e descrición", + "Signature only" : "Só a sinatura", "Reset to default" : "Restabelecer os valores predeterminados", + "Signature text template" : "Modelo de texto de sinatura", + "Signature font size" : "Tamaño da letra da sinatura", + "Template font size" : "Tamaño da letra do modelo", + "Default signature width" : "Largo predeterminado da sinatura", + "Default signature height" : "Altura predeterminada da sinatura", + "Background image" : "Imaxe de fondo", "Upload new background image" : "Enviar unha nova imaxe de fondo", "Remove background" : "Retirar o fondo", "Zoom level" : "Nivel de achegamento", diff --git a/l10n/gl.json b/l10n/gl.json index e9b39de1c1..2020c22153 100644 --- a/l10n/gl.json +++ b/l10n/gl.json @@ -180,6 +180,17 @@ "Invalid signature font size. The value must be between %.1f and %.0f." : "O tamaño da letra da sinatura non é válido.. O valor debe estar entre %.1f e %.0f.", "Unique identifier of the signed document" : "Identificador único do documento asinado", "Name of the certificate issuer used for the signature." : "Nome do emisor do certificado utilizado para a sinatura.", + "Date when the signer sent the request to sign (without time, in their local time zone)." : "Data na que o asinante enviou a solicitude para asinar (sen hora, no seu fuso horario local).", + "Date and time when the signer sent the request to sign (in their local time zone)." : "Data e hora na que o asinante enviou a solicitude para asinar (no seu fuso horario local).", + "Time zone of signer when sent the request to sign (in their local time zone)." : "Fuso horario do asinante cando enviou a solicitude para asinar (no seu fuso horario local).", + "Date and time when the signature was applied on the server. Cannot be formatted using Twig." : "Data e hora en que se aplicou a sinatura no servidor. Non pode ser formatada empregando Twig.", + "Common Name (CN) used to identify the document signer." : "Nome común (CN) usado para identificar o asinante do documento.", + "The signer's email is optional and can be left blank." : "O correo-e do asinante é opcional e pódese deixar en branco.", + "Unique information used to identify the signer (such as email, phone number, or username)." : "Información única empregada para identificar ao asinante (como correo-e, número de teléfono ou nome de usuario).", + "IP address of the person who signed the document." : "Enderezo IP da persoa que asinou o documento.", + "Browser and device information of the person who signed the document." : "Información do navegador e do dispositivo da persoa que asinou o documento.", + "Signed with LibreSign\n{{SignerCommonName}}\nIssuer: {{IssuerCommonName}}\nDate: {{ServerSignatureDate}}\nIP: {{SignerIP}}\nUser agent: {{SignerUserAgent}}" : "Asinado con LibreSign\n{{SignerCommonName}}\nEmisor: {{IssuerCommonName}}\nData: {{ServerSignatureDate}}\nIP: {{SignerIP}}\nAxente de usuario: {{SignerUserAgent}}", + "Signed with LibreSign\n{{SignerCommonName}}\nIssuer: {{IssuerCommonName}}\nDate: {{ServerSignatureDate}}" : "Asinado con LibreSign\n{{SignerCommonName}}\nEmisor: {{IssuerCommonName}}\nData: {{ServerSignatureDate}}", "Invalid PDF" : "O PDF non é válido", "LibreSign" : "LibreSign", "✍️ Self-hosted document signer using digital certificate" : "✍️ Asinante de documentos en aloxamento propio empregando certificado dixital", @@ -221,11 +232,13 @@ "Send" : "Enviar", "Previous" : "Anterior", "Next" : "Seguinte", + "Account does not exist" : "A conta non existe", "Select a signer to set their signature position" : "Seleccione un asinante para definir a posición da súa sinatura", "Click on the place you want to add." : "Prema no lugar que quere engadir.", "Sign" : "Asinar", "Confirm" : "Confirmar", "Request signatures?" : "Solicitar sinaturas?", + "Edit visible signatures" : "Editar sinaturas visíbeis", "Add signer" : "Engadir asinante", "Send reminder" : "Enviar lembrete", "Open file" : "Abrir ficheiro", @@ -254,7 +267,9 @@ "Change password" : "Cambiar o contrasinal", "Your signatures" : "As súas sinaturas", "Signature" : "Sinatura", + "No signature, click here to create a new one" : "Sen sinatura, prema aquí para crear unha nova", "Initials" : "Iniciais", + "No initials, click here to create a new one" : "Sen iniciais, prema aquí para crear unha nova", "Profile picture" : "Imaxe do perfil", "This is not a valid email" : "Este non é un correo-e válido", "The email entered is not the same as the email in the invitation" : "O correo-e introducido non é o mesmo que o correo-e do convite", @@ -322,6 +337,8 @@ "Certificate engine" : "Motor de certificados", "Select the certificate engine to generate the root certificate" : "Seleccione o motor de certificados para xerar o certificado raíz", "I will not use root certificate" : "Non vou usar o certificado raíz", + "Certificate Policy OID" : "OID da Política de Certificación", + "Upload Certification Practice Statement (CPS) PDF" : "Enviar o PDF da Declaración de Prácticas de Certificación (DPC) PDF", "Remove" : "Retirar", "Collect signers' metadata" : "Recoller os metadatos dos asinantes", "Enabling this feature, every time a document is signed, LibreSign will store the IP address and user agent of the signer." : "Ao activar esta función, cada vez que se asine un documento, LibreSign almacenará o enderezo IP e o axente de usuario do asinante.", @@ -347,7 +364,9 @@ "The length of time for which the generated certificate will be valid, in days." : "O período de vixencia do certificado xerado, en días.", "Expiration in days" : "Caducidade en días", "Identification documents" : "Documentos identificativos", + "The flow of identification documents will make it mandatory for anyone who must sign a file, to send their identification documents, this, in order for them to be approved by some member of the approval group. The user can only create the certificate after these are approved." : "O fluxo de documentos de identificación fará obrigatorio que calquera persoa que deba asinar un expediente, enviar os seus documentos de identificación, isto, para que sexan aprobados por algún membro do grupo de aprobación. O usuario só poderá crear o certificado após que estean aprobados.", "Enable identification documents flow" : "Activar o fluxo de documentos de identificación", + "Select authorized groups that can request to sign documents. Admin group is the default group and doesn't need to be defined." : "Seleccione os grupos autorizados que poderán solicitar asinar documentos. O grupo de administración é o grupo predeterminado e non é necesario definilo.", "Identification factors" : "Factores de identificación", "Ways to identify a person who will sign a document." : "Formas de identificar a persoa que asinará un documento.", "Request to create account when the user does not have an account" : "Solicitude de creación dunha conta cando o usuario non teña unha conta", @@ -357,10 +376,16 @@ "This information will appear on the validation page" : "Esta información aparecerá na páxina de validación", "Legal Information" : "Información legal", "Reminders" : "Lembretes", + "Follow up with automatic reminders. Signers will receive reminders until they sign or decline." : "Seguimento con lembretes automáticos. Os asinantes recibirán lembretes ata que asinen ou declinen.", + "Send time (HH:mm)" : "Hora de envío (HH:mm)", + "The first message is not considered a notification" : "A primeira mensaxe non se considera unha notificación", "Zero or empty is no reminder." : "Cero ou baleiro non é lembrete.", "off" : "apagado", "on" : "activado", "Turn {reminderState} auto reminders" : "Cambiar a {reminderState} os lembretes automáticos", + "First reminder after (days)" : "Primeiro lembrete após (días)", + "Days between reminders" : "Días entre lembretes", + "Max reminders per signer" : "Máximo de lembretes por asinante", "Root certificate data" : "Datos do certificado raíz", "To generate new signatures, you must first generate the root certificate." : "Para xerar novas sinaturas, antes ten que xerar o certificado raíz.", "Generate root certificate" : "Xerar un certificado raíz", @@ -374,11 +399,27 @@ "Yes" : "Si", "No" : "Non", "Full name of the main company or main user of this instance" : "Nome completo da empresa principal ou usuario principal desta instancia", + "Include certificate policy" : "Incluír a política de certificación", "Define custom values to use {engine}" : "Defina os valores personalizados para usar {engine}", "Not mandatory, leave blank to use the default value." : "Non é obrigatorio, déixeo baleiro para usar o valor predeterminado.", "Signature hash algorithm" : "Algoritmo de resumo de sinatura", "Hash algorithm used for signature." : "Algoritmo de resumo empregado para a sinatura.", + "Signature stamp" : "Selo da sinatura", + "Configure the content displayed with the signature. The text template uses Twig syntax." : "Configurar o contido que se amosa coa sinatura. O modelo de texto emprega a sintaxe de Twig.", + "Signature image here" : "Imaxe da sinatura aquí", + "Signature template content is overflowing. Reduce the text." : "O contido do modelo de sinatura desborda as marxes. Reduza o texto.", + "Display signature mode" : "Amosar o modo de sinatura", + "Description only" : "Só a descrición", + "Signature and description" : "Sinatura e descrición", + "Signer name and description" : "Nome do asinante e descrición", + "Signature only" : "Só a sinatura", "Reset to default" : "Restabelecer os valores predeterminados", + "Signature text template" : "Modelo de texto de sinatura", + "Signature font size" : "Tamaño da letra da sinatura", + "Template font size" : "Tamaño da letra do modelo", + "Default signature width" : "Largo predeterminado da sinatura", + "Default signature height" : "Altura predeterminada da sinatura", + "Background image" : "Imaxe de fondo", "Upload new background image" : "Enviar unha nova imaxe de fondo", "Remove background" : "Retirar o fondo", "Zoom level" : "Nivel de achegamento", From ce6d0bac4a8ec0a39d85f58fcd8bd8c64b7702fb Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 19:22:11 -0300 Subject: [PATCH 0308/5910] fix: ignore newest server config Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/behat-mariadb.yml | 1 + .github/workflows/behat-mysql.yml | 1 + .github/workflows/behat-pgsql.yml | 1 + .github/workflows/behat-sqlite.yml | 1 + .github/workflows/phpunit-mariadb.yml | 1 + .github/workflows/phpunit-mysql.yml | 1 + .github/workflows/phpunit-pgsql.yml | 1 + .github/workflows/phpunit-sqlite.yml | 1 + 8 files changed, 8 insertions(+) diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index 78793d4ea0..cec5b051d5 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -154,6 +154,7 @@ jobs: ./occ config:system:set mail_smtphost --value mailhog ./occ config:system:set allow_local_remote_servers --value true --type boolean ./occ config:system:set auth.bruteforce.protection.enabled --value false --type boolean + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Run behat working-directory: apps/${{ env.APP_NAME }}/tests/integration diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index da1f56157a..19c0a8538c 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -167,6 +167,7 @@ jobs: ./occ config:system:set mail_smtphost --value mailhog ./occ config:system:set allow_local_remote_servers --value true --type boolean ./occ config:system:set auth.bruteforce.protection.enabled --value false --type boolean + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Run behat working-directory: apps/${{ env.APP_NAME }}/tests/integration diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index 986f0e41be..22e987e4a7 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -161,6 +161,7 @@ jobs: ./occ config:system:set mail_smtphost --value mailhog ./occ config:system:set allow_local_remote_servers --value true --type boolean ./occ config:system:set auth.bruteforce.protection.enabled --value false --type boolean + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Run behat working-directory: apps/${{ env.APP_NAME }}/tests/integration diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index 363f6b72a5..babf89c695 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -152,6 +152,7 @@ jobs: ./occ config:system:set mail_smtphost --value mailhog ./occ config:system:set allow_local_remote_servers --value true --type boolean ./occ config:system:set auth.bruteforce.protection.enabled --value false --type boolean + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Run behat working-directory: apps/${{ env.APP_NAME }}/tests/integration diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index cb974caf68..68a18d94ac 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -156,6 +156,7 @@ jobs: --admin-pass admin ./occ --version ./occ app:enable --force ${{ env.APP_NAME }} + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Check PHPUnit script is defined id: check_phpunit diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index ca85ab8764..31e26159eb 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -154,6 +154,7 @@ jobs: --admin-pass admin ./occ --version ./occ app:enable --force ${{ env.APP_NAME }} + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Check PHPUnit script is defined id: check_phpunit diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index 378ccaed00..b75071166e 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -152,6 +152,7 @@ jobs: --admin-pass admin ./occ --version ./occ app:enable --force ${{ env.APP_NAME }} + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Check PHPUnit script is defined id: check_phpunit diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index dfe0262eee..082165e27f 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -146,6 +146,7 @@ jobs: --admin-pass admin ./occ --version ./occ app:enable --force ${{ env.APP_NAME }} + ./occ config:app:set dav enableDefaultContact --value false --type boolean - name: Check PHPUnit script is defined id: check_phpunit From cd1e7ac4f32943b55805566fdb33cee9c689abde Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Tue, 2 Sep 2025 17:03:05 -0400 Subject: [PATCH 0309/5910] chore: gridViewButtonLabel Signed-off-by: Crisciany Souza --- src/store/userconfig.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/store/userconfig.js b/src/store/userconfig.js index 7e70f4808f..d7edb127e4 100644 --- a/src/store/userconfig.js +++ b/src/store/userconfig.js @@ -5,6 +5,7 @@ import { defineStore } from 'pinia' import { set } from 'vue' +import axios from 'axios' export const useUserConfigStore = defineStore('userconfig', { state: () => ({ @@ -12,7 +13,24 @@ export const useUserConfigStore = defineStore('userconfig', { }), actions: { async update(key, value) { + const oldValue = this[key] + set(this, key, value) + + try { + const response = await axios.put( + `/apps/files/api/v1/config/${key}`, + { value } + ) + + if (response?.data?.value !== undefined) { + set(this, key, response.data.value) + } + } catch (error) { + console.error('Erro ao salvar configuração:', error) + + set(this, key, oldValue) + } }, }, }) From 8770d14aabced6517bbfed8a06d972dd14053757 Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Fri, 12 Sep 2025 17:02:18 -0400 Subject: [PATCH 0310/5910] chore: configurations to fix the button and try to save the state Signed-off-by: Crisciany Souza --- src/store/userconfig.js | 31 ++++++++++++++++++++++--------- src/views/FilesList/FilesList.vue | 2 ++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/store/userconfig.js b/src/store/userconfig.js index d7edb127e4..bbef4b9b88 100644 --- a/src/store/userconfig.js +++ b/src/store/userconfig.js @@ -5,32 +5,45 @@ import { defineStore } from 'pinia' import { set } from 'vue' -import axios from 'axios' +import { generateUrl } from '@nextcloud/router' +import axios from '@nextcloud/axios' +import { emit, subscribe } from '@nextcloud/event-bus' export const useUserConfigStore = defineStore('userconfig', { state: () => ({ - grid_view: true, + grid_view: true, // valor inicial, mas será sobrescrito pelo servidor }), actions: { + onUpdate(key, value) { + set(this, key, value) + }, + async update(key, value) { const oldValue = this[key] - - set(this, key, value) + this.onUpdate(key, value) try { const response = await axios.put( - `/apps/files/api/v1/config/${key}`, - { value } + generateUrl('/apps/files/api/v1/config/{key}', { key }), + { value }, ) if (response?.data?.value !== undefined) { - set(this, key, response.data.value) + this.onUpdate(key, response.data.value) } + + emit('files:config:updated', { key, value }) } catch (error) { console.error('Erro ao salvar configuração:', error) - - set(this, key, oldValue) + this.onUpdate(key, oldValue) } }, + + initListeners() { + console.log('Initializing user config listeners...') + subscribe('files:config:updated', ({ key, value }) => { + this.onUpdate(key, value) + }) + }, }, }) diff --git a/src/views/FilesList/FilesList.vue b/src/views/FilesList/FilesList.vue index a7523ad167..444308aaad 100644 --- a/src/views/FilesList/FilesList.vue +++ b/src/views/FilesList/FilesList.vue @@ -154,6 +154,8 @@ export default { this.filesStore.updateAllFiles() }, toggleGridView() { + console.log('Toggling grid view') + console.log(this.userConfigStore) this.userConfigStore.update('grid_view', !this.userConfigStore.grid_view) }, closeSidebar() { From 029620d73de74af14e32a9285226d06ecfe3a282 Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Mon, 15 Sep 2025 17:10:16 -0400 Subject: [PATCH 0311/5910] chore: fixed selected option gridview Signed-off-by: Crisciany Souza --- lib/Service/AccountService.php | 1 + src/store/modules/settings.js | 2 ++ src/store/userconfig.js | 32 ++++---------------------------- 3 files changed, 7 insertions(+), 28 deletions(-) diff --git a/lib/Service/AccountService.php b/lib/Service/AccountService.php index 0083415885..1eeed0adc0 100644 --- a/lib/Service/AccountService.php +++ b/lib/Service/AccountService.php @@ -233,6 +233,7 @@ public function getConfig(?IUser $user = null): array { $info['hasSignatureFile'] = $this->hasSignatureFile($user); $info['phoneNumber'] = $this->getPhoneNumber($user); $info['isApprover'] = $this->validateHelper->userCanApproveValidationDocuments($user, false); + $info['grid_view'] = $this->appConfig->getValueBool(Application::APP_ID, 'grid_view', false); return $info; } diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index 77c9b9bd28..d187ed243e 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -16,6 +16,8 @@ export default { identificationDocumentsFlow: false, isApprover: false, phoneNumber: '', + grid_view: false, + }, ...(libresignState?.settings || {}), }, diff --git a/src/store/userconfig.js b/src/store/userconfig.js index bbef4b9b88..c78307ec4a 100644 --- a/src/store/userconfig.js +++ b/src/store/userconfig.js @@ -4,46 +4,22 @@ */ import { defineStore } from 'pinia' -import { set } from 'vue' -import { generateUrl } from '@nextcloud/router' -import axios from '@nextcloud/axios' -import { emit, subscribe } from '@nextcloud/event-bus' +import { loadState } from '@nextcloud/initial-state' export const useUserConfigStore = defineStore('userconfig', { state: () => ({ - grid_view: true, // valor inicial, mas será sobrescrito pelo servidor + grid_view: loadState('libresign', 'config', { grid_view: false }).grid_view, }), actions: { onUpdate(key, value) { - set(this, key, value) + this[key] = value }, async update(key, value) { - const oldValue = this[key] this.onUpdate(key, value) - try { - const response = await axios.put( - generateUrl('/apps/files/api/v1/config/{key}', { key }), - { value }, - ) - - if (response?.data?.value !== undefined) { - this.onUpdate(key, response.data.value) - } - - emit('files:config:updated', { key, value }) - } catch (error) { - console.error('Erro ao salvar configuração:', error) - this.onUpdate(key, oldValue) - } + OCP.AppConfig.setValue('libresign', 'grid_view', value) }, - initListeners() { - console.log('Initializing user config listeners...') - subscribe('files:config:updated', ({ key, value }) => { - this.onUpdate(key, value) - }) - }, }, }) From 32b5b4cff61c871bdd920c6eb9269faff57581a2 Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Tue, 16 Sep 2025 17:36:28 -0400 Subject: [PATCH 0312/5910] chore: using userConfig Signed-off-by: Crisciany Souza --- lib/Controller/AccountController.php | 41 +++++++++ lib/Service/AccountService.php | 6 +- openapi-full.json | 132 +++++++++++++++++++++++++++ openapi.json | 132 +++++++++++++++++++++++++++ src/store/modules/settings.js | 2 - src/store/userconfig.js | 29 +++--- src/types/openapi/openapi-full.ts | 68 ++++++++++++++ src/types/openapi/openapi.ts | 68 ++++++++++++++ src/views/FilesList/FilesList.vue | 2 - 9 files changed, 462 insertions(+), 18 deletions(-) diff --git a/lib/Controller/AccountController.php b/lib/Controller/AccountController.php index f788c74058..19fe924a32 100644 --- a/lib/Controller/AccountController.php +++ b/lib/Controller/AccountController.php @@ -32,6 +32,7 @@ use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\Attribute\UseSession; use OCP\AppFramework\Http\DataResponse; +use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; use OCP\IURLGenerator; @@ -62,6 +63,7 @@ public function __construct( protected IUserSession $userSession, protected SessionService $sessionService, private ValidateHelper $validateHelper, + private IConfig $config, ) { parent::__construct(Application::APP_ID, $request); } @@ -518,4 +520,43 @@ public function readPfxData(string $password): DataResponse { Http::STATUS_ACCEPTED ); } + + /** + * Set user config value + * + * @param string $key Config key + * @param mixed $value Config value + * @return DataResponse|DataResponse + * + * 200: Config updated + * 400: Error updating config + */ + #[NoAdminRequired] + #[NoCSRFRequired] + #[ApiRoute(verb: 'PUT', url: '/api/{apiVersion}/account/config/{key}', requirements: ['apiVersion' => '(v1)'])] + public function setConfig(string $key): DataResponse { + try { + $user = $this->userSession->getUser(); + if (!$user) { + throw new \Exception('User not authenticated'); + } + $data = $this->request->getParams(); + $value = $data['value'] ?? null; + + if (is_bool($value)) { + $value = $value ? '1' : '0'; + } + + $this->config->setUserValue($user->getUID(), Application::APP_ID, $key, $value); + + return new DataResponse([ + 'key' => $key, + 'value' => $value, + ], Http::STATUS_OK); + } catch (\Throwable $e) { + return new DataResponse([ + 'message' => $e->getMessage(), + ], Http::STATUS_BAD_REQUEST); + } + } } diff --git a/lib/Service/AccountService.php b/lib/Service/AccountService.php index 1eeed0adc0..0b2e4a94f3 100644 --- a/lib/Service/AccountService.php +++ b/lib/Service/AccountService.php @@ -233,10 +233,14 @@ public function getConfig(?IUser $user = null): array { $info['hasSignatureFile'] = $this->hasSignatureFile($user); $info['phoneNumber'] = $this->getPhoneNumber($user); $info['isApprover'] = $this->validateHelper->userCanApproveValidationDocuments($user, false); - $info['grid_view'] = $this->appConfig->getValueBool(Application::APP_ID, 'grid_view', false); + //$info['grid_view'] = $this->appConfig->getValueBool(Application::APP_ID, 'grid_view', false); + $info['grid_view'] = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'grid_view', false) === '1'; + return $info; } + + private function getPhoneNumber(?IUser $user): string { if (!$user) { return ''; diff --git a/openapi-full.json b/openapi-full.json index a4addb1a79..47a493f511 100644 --- a/openapi-full.json +++ b/openapi-full.json @@ -3539,6 +3539,138 @@ } } }, + "/ocs/v2.php/apps/libresign/api/{apiVersion}/account/config/{key}": { + "put": { + "operationId": "account-set-config", + "summary": "Set user config value", + "tags": [ + "account" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "key", + "in": "path", + "description": "Config key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Config updated", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Error updating config", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/apps/libresign/api/{apiVersion}/file/validate/uuid/{uuid}": { "get": { "operationId": "file-validate-uuid", diff --git a/openapi.json b/openapi.json index ae436fc454..7d000b01f8 100644 --- a/openapi.json +++ b/openapi.json @@ -3392,6 +3392,138 @@ } } }, + "/ocs/v2.php/apps/libresign/api/{apiVersion}/account/config/{key}": { + "put": { + "operationId": "account-set-config", + "summary": "Set user config value", + "tags": [ + "account" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "apiVersion", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "v1" + ], + "default": "v1" + } + }, + { + "name": "key", + "in": "path", + "description": "Config key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Config updated", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Error updating config", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/apps/libresign/api/{apiVersion}/file/validate/uuid/{uuid}": { "get": { "operationId": "file-validate-uuid", diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index d187ed243e..77c9b9bd28 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -16,8 +16,6 @@ export default { identificationDocumentsFlow: false, isApprover: false, phoneNumber: '', - grid_view: false, - }, ...(libresignState?.settings || {}), }, diff --git a/src/store/userconfig.js b/src/store/userconfig.js index c78307ec4a..811c5a5014 100644 --- a/src/store/userconfig.js +++ b/src/store/userconfig.js @@ -5,21 +5,24 @@ import { defineStore } from 'pinia' import { loadState } from '@nextcloud/initial-state' +import { generateOcsUrl } from '@nextcloud/router' +import axios from '@nextcloud/axios' export const useUserConfigStore = defineStore('userconfig', { - state: () => ({ - grid_view: loadState('libresign', 'config', { grid_view: false }).grid_view, - }), - actions: { - onUpdate(key, value) { - this[key] = value - }, + state: () => ({ + grid_view: loadState('libresign', 'config', { grid_view: false }).grid_view, + }), + actions: { + onUpdate(key, value) { + this[key] = value + }, - async update(key, value) { - this.onUpdate(key, value) + async update(key, value) { + this.onUpdate(key, value) - OCP.AppConfig.setValue('libresign', 'grid_view', value) - }, - - }, + await axios.put(generateOcsUrl('/apps/libresign/api/v1/account/config/{key}', { key }), { + value, + }) + }, + }, }) diff --git a/src/types/openapi/openapi-full.ts b/src/types/openapi/openapi-full.ts index 1fa16ba3c9..262d421096 100644 --- a/src/types/openapi/openapi-full.ts +++ b/src/types/openapi/openapi-full.ts @@ -495,6 +495,23 @@ export type paths = { patch?: never; trace?: never; }; + "/ocs/v2.php/apps/libresign/api/{apiVersion}/account/config/{key}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** Set user config value */ + put: operations["account-set-config"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/ocs/v2.php/apps/libresign/api/{apiVersion}/file/validate/uuid/{uuid}": { parameters: { query?: never; @@ -2634,6 +2651,57 @@ export interface operations { }; }; }; + "account-set-config": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + /** @description Config key */ + key: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Config updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: { + key: string; + value: Record; + }; + }; + }; + }; + }; + /** @description Error updating config */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: { + message: string; + }; + }; + }; + }; + }; + }; + }; "file-validate-uuid": { parameters: { query?: never; diff --git a/src/types/openapi/openapi.ts b/src/types/openapi/openapi.ts index 7e388851cb..5397b27750 100644 --- a/src/types/openapi/openapi.ts +++ b/src/types/openapi/openapi.ts @@ -495,6 +495,23 @@ export type paths = { patch?: never; trace?: never; }; + "/ocs/v2.php/apps/libresign/api/{apiVersion}/account/config/{key}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** Set user config value */ + put: operations["account-set-config"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/ocs/v2.php/apps/libresign/api/{apiVersion}/file/validate/uuid/{uuid}": { parameters: { query?: never; @@ -2310,6 +2327,57 @@ export interface operations { }; }; }; + "account-set-config": { + parameters: { + query?: never; + header: { + /** @description Required to be true for the API request to pass */ + "OCS-APIRequest": boolean; + }; + path: { + apiVersion: "v1"; + /** @description Config key */ + key: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Config updated */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: { + key: string; + value: Record; + }; + }; + }; + }; + }; + /** @description Error updating config */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + ocs: { + meta: components["schemas"]["OCSMeta"]; + data: { + message: string; + }; + }; + }; + }; + }; + }; + }; "file-validate-uuid": { parameters: { query?: never; diff --git a/src/views/FilesList/FilesList.vue b/src/views/FilesList/FilesList.vue index 444308aaad..a7523ad167 100644 --- a/src/views/FilesList/FilesList.vue +++ b/src/views/FilesList/FilesList.vue @@ -154,8 +154,6 @@ export default { this.filesStore.updateAllFiles() }, toggleGridView() { - console.log('Toggling grid view') - console.log(this.userConfigStore) this.userConfigStore.update('grid_view', !this.userConfigStore.grid_view) }, closeSidebar() { From 6bed07bedb9bb34b2a485bd2639d096f5b812d31 Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Fri, 19 Sep 2025 11:23:09 -0400 Subject: [PATCH 0313/5910] chore: verify user null Signed-off-by: Crisciany Souza --- lib/Service/AccountService.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/Service/AccountService.php b/lib/Service/AccountService.php index 0b2e4a94f3..b23ca9fa8f 100644 --- a/lib/Service/AccountService.php +++ b/lib/Service/AccountService.php @@ -233,8 +233,7 @@ public function getConfig(?IUser $user = null): array { $info['hasSignatureFile'] = $this->hasSignatureFile($user); $info['phoneNumber'] = $this->getPhoneNumber($user); $info['isApprover'] = $this->validateHelper->userCanApproveValidationDocuments($user, false); - //$info['grid_view'] = $this->appConfig->getValueBool(Application::APP_ID, 'grid_view', false); - $info['grid_view'] = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'grid_view', false) === '1'; + $info['grid_view'] = $this->getUserConfigGridView($user); return $info; } @@ -261,6 +260,14 @@ public function hasSignatureFile(?IUser $user = null): bool { } } + private function getUserConfigGridView(?IUser $user = null): bool { + if (!$user) { + return false; + } + + return $this->config->getUserValue($user->getUID(), Application::APP_ID, 'grid_view', false) === '1'; + } + /** * Get PDF node by UUID * From 2500aaecaacb4a29e19292af7217b92e2119b934 Mon Sep 17 00:00:00 2001 From: Crisciany Souza Date: Mon, 22 Sep 2025 18:53:19 -0400 Subject: [PATCH 0314/5910] chore: lint Signed-off-by: Crisciany Souza --- src/store/userconfig.js | 31 ++++++++++++++++--------------- src/views/DefaultPageError.vue | 2 +- src/views/RenewEmail.vue | 4 ++-- src/views/Validation.vue | 12 ++++++------ 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/store/userconfig.js b/src/store/userconfig.js index 811c5a5014..757d3c54e9 100644 --- a/src/store/userconfig.js +++ b/src/store/userconfig.js @@ -4,25 +4,26 @@ */ import { defineStore } from 'pinia' + +import axios from '@nextcloud/axios' import { loadState } from '@nextcloud/initial-state' import { generateOcsUrl } from '@nextcloud/router' -import axios from '@nextcloud/axios' export const useUserConfigStore = defineStore('userconfig', { - state: () => ({ - grid_view: loadState('libresign', 'config', { grid_view: false }).grid_view, - }), - actions: { - onUpdate(key, value) { - this[key] = value - }, + state: () => ({ + grid_view: loadState('libresign', 'config', { grid_view: false }).grid_view, + }), + actions: { + onUpdate(key, value) { + this[key] = value + }, - async update(key, value) { - this.onUpdate(key, value) + async update(key, value) { + this.onUpdate(key, value) - await axios.put(generateOcsUrl('/apps/libresign/api/v1/account/config/{key}', { key }), { - value, - }) - }, - }, + await axios.put(generateOcsUrl('/apps/libresign/api/v1/account/config/{key}', { key }), { + value, + }) + }, + }, }) diff --git a/src/views/DefaultPageError.vue b/src/views/DefaultPageError.vue index c5f953e7eb..63abb4df52 100644 --- a/src/views/DefaultPageError.vue +++ b/src/views/DefaultPageError.vue @@ -79,7 +79,7 @@ export default { box-sizing: border-box; font-family: 'Nunito', sans-serif; max-width: 560px; - padding-left: 50px; + padding-inline-start: 50px; h1{ font-size: 65px; diff --git a/src/views/RenewEmail.vue b/src/views/RenewEmail.vue index efed4ce11b..c95bbb5dcf 100644 --- a/src/views/RenewEmail.vue +++ b/src/views/RenewEmail.vue @@ -116,7 +116,7 @@ body { height: 130px; margin: 0 auto; position: relative; - left: unset; + inset-inline-start: unset; } } @@ -146,7 +146,7 @@ body { } &__body { white-space: pre-line; - text-align: left; + text-align: start; font-size: 1rem; padding: 1rem; } diff --git a/src/views/Validation.vue b/src/views/Validation.vue index 722fffc6fe..0008254232 100644 --- a/src/views/Validation.vue +++ b/src/views/Validation.vue @@ -625,7 +625,7 @@ export default { } } button { - float: right; + float: inline-end; margin-top: 20px; align-self: flex-end; } @@ -687,12 +687,12 @@ export default { box-sizing: border-box; } .extra { - margin-left: 44px; - padding-right: 44px; + margin-inline-start: 44px; + padding-inline-end: 44px; } .extra-chain { - margin-left: 88px; - padding-right: 88px; + margin-inline-start: 88px; + padding-inline-end: 88px; } } @@ -708,7 +708,7 @@ export default { font-size: 1.3rem; } .infor-container { - margin-right: 0px; + margin-inline-end: 0px; .section { width: unset; box-shadow: none; From 3af803b590ef8ccec2ef9aff4cdfc1eca0019fbc Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 23 Sep 2025 02:32:44 +0000 Subject: [PATCH 0315/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 1 + l10n/be.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/be.js b/l10n/be.js index 93f9aa8ae8..0f9dc9c834 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -22,6 +22,7 @@ OC.L10N.register( "Invalid file provided" : "Прапанаваны файл некарэктны", "Account" : "Уліковы запіс", "Email" : "Электронная пошта", + "Email token" : "Токен электроннай пошты", "LibreSign" : "LibreSign", "Text" : "Тэкст", "Upload" : "Запампаваць", diff --git a/l10n/be.json b/l10n/be.json index a613158e98..ad15713e47 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -20,6 +20,7 @@ "Invalid file provided" : "Прапанаваны файл некарэктны", "Account" : "Уліковы запіс", "Email" : "Электронная пошта", + "Email token" : "Токен электроннай пошты", "LibreSign" : "LibreSign", "Text" : "Тэкст", "Upload" : "Запампаваць", From f85331ab3454a6f551022d92c9c9245a5a3e9668 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 24 Sep 2025 02:33:07 +0000 Subject: [PATCH 0316/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/el.js | 1 + l10n/el.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/el.js b/l10n/el.js index 59fff016de..de731448e3 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -76,6 +76,7 @@ OC.L10N.register( "Type" : "Τύπος", "Status" : "Κατάσταση", "Actions" : "Ενέργειες", + "Delete certificate" : "Διαγραφή πιστοποιητικού", "Change password" : "Αλλαγή συνθηματικού", "Signature" : "Υπογραφή", "Profile picture" : "Φωτογραφία προφίλ", diff --git a/l10n/el.json b/l10n/el.json index 203d1374cb..0342fe208a 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -74,6 +74,7 @@ "Type" : "Τύπος", "Status" : "Κατάσταση", "Actions" : "Ενέργειες", + "Delete certificate" : "Διαγραφή πιστοποιητικού", "Change password" : "Αλλαγή συνθηματικού", "Signature" : "Υπογραφή", "Profile picture" : "Φωτογραφία προφίλ", From 521ec4e6447d202aeb94405bde78a15f8e2bc2ed Mon Sep 17 00:00:00 2001 From: Eswar Dudi Date: Wed, 24 Sep 2025 23:34:30 +0530 Subject: [PATCH 0317/5910] feat(dependabot): add missing composer paths to config Signed-off-by: Eswar Dudi --- .github/dependabot.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b1aa6202e2..26e57e85fd 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,8 +4,17 @@ version: 2 updates: # Maintain dependencies for Composer - - package-ecosystem: "composer" # See documentation for possible values - directory: "/" # Location of package manifests + - package-ecosystem: "composer" + directories: + - "/" + - "/vendor-bin/coding-standard" + - "/vendor-bin/openapi-extractor" + - "/vendor-bin/php-coveralls" + - "/vendor-bin/php-scoper" + - "/vendor-bin/phpunit" + - "/vendor-bin/psalm" + - "/vendor-bin/rector" + - "/tests/integration" schedule: interval: "daily" From 8657cff73c6ffae6677ea4998fcae8eb991ec913 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 20:00:29 +0000 Subject: [PATCH 0318/5910] chore(deps): Bump behat/behat in /tests/integration Bumps [behat/behat](https://github.com/Behat/Behat) from 3.23.0 to 3.24.1. - [Release notes](https://github.com/Behat/Behat/releases) - [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md) - [Commits](https://github.com/Behat/Behat/compare/v3.23.0...v3.24.1) --- updated-dependencies: - dependency-name: behat/behat dependency-version: 3.24.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- tests/integration/composer.lock | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/integration/composer.lock b/tests/integration/composer.lock index 56decf34cf..b2e04c14d9 100644 --- a/tests/integration/composer.lock +++ b/tests/integration/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "behat/behat", - "version": "v3.23.0", + "version": "v3.24.1", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "c465af8756adaaa6d962c3176a0a6c594361809b" + "reference": "1b67565a55283b6c0d050a0e4c4e44025c791a67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/c465af8756adaaa6d962c3176a0a6c594361809b", - "reference": "c465af8756adaaa6d962c3176a0a6c594361809b", + "url": "https://api.github.com/repos/Behat/Behat/zipball/1b67565a55283b6c0d050a0e4c4e44025c791a67", + "reference": "1b67565a55283b6c0d050a0e4c4e44025c791a67", "shasum": "" }, "require": { @@ -39,8 +39,9 @@ "friendsofphp/php-cs-fixer": "^3.68", "phpstan/phpstan": "^2.0", "phpunit/phpunit": "^9.6", - "rector/rector": "^2.0", + "rector/rector": "2.1.4", "sebastian/diff": "^4.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", "symfony/polyfill-php84": "^1.31", "symfony/process": "^5.4 || ^6.4 || ^7.0" }, @@ -95,9 +96,9 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.23.0" + "source": "https://github.com/Behat/Behat/tree/v3.24.1" }, - "time": "2025-07-15T16:58:54+00:00" + "time": "2025-09-15T09:09:06+00:00" }, { "name": "behat/gherkin", From 5e2df329aef6ac1a5bf503bb63d79df7555d8c1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 20:07:11 +0000 Subject: [PATCH 0319/5910] chore(deps): Bump shivammathur/setup-php from 2.35.4 to 2.35.5 Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.35.4 to 2.35.5. - [Release notes](https://github.com/shivammathur/setup-php/releases) - [Commits](https://github.com/shivammathur/setup-php/compare/ec406be512d7077f68eed36e63f4d91bc006edc4...bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f) --- updated-dependencies: - dependency-name: shivammathur/setup-php dependency-version: 2.35.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/appstore-build-publish.yml | 2 +- .github/workflows/behat-mariadb.yml | 2 +- .github/workflows/behat-mysql.yml | 2 +- .github/workflows/behat-pgsql.yml | 2 +- .github/workflows/behat-sqlite.yml | 2 +- .github/workflows/lint-php-cs.yml | 2 +- .github/workflows/lint-php.yml | 2 +- .github/workflows/openapi.yml | 2 +- .github/workflows/phpunit-mariadb.yml | 2 +- .github/workflows/phpunit-mysql.yml | 2 +- .github/workflows/phpunit-pgsql.yml | 2 +- .github/workflows/phpunit-sqlite.yml | 2 +- .github/workflows/psalm.yml | 2 +- .github/workflows/update-nextcloud-ocp.yml | 2 +- .github/workflows/update-psalm-baseline.yml | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml index de411bdb5c..188bfb66b2 100644 --- a/.github/workflows/appstore-build-publish.yml +++ b/.github/workflows/appstore-build-publish.yml @@ -88,7 +88,7 @@ jobs: filename: ${{ env.APP_NAME }}/appinfo/info.xml - name: Set up php ${{ steps.php-versions.outputs.php-min }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ steps.php-versions.outputs.php-min }} coverage: none diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index cec5b051d5..ccf121c989 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -101,7 +101,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2 with: php-version: ${{ matrix.php-versions }} tools: phpunit diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index 19c0a8538c..699a167c45 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -106,7 +106,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2 with: php-version: ${{ matrix.php-versions }} tools: phpunit diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index 22e987e4a7..ff9b307de2 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -105,7 +105,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2 with: php-version: ${{ matrix.php-versions }} tools: phpunit diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index babf89c695..f7c61d5b76 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -96,7 +96,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2 with: php-version: ${{ matrix.php-versions }} tools: phpunit diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml index 7baa821879..18086c8b76 100644 --- a/.github/workflows/lint-php-cs.yml +++ b/.github/workflows/lint-php-cs.yml @@ -34,7 +34,7 @@ jobs: uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - name: Set up php${{ steps.versions.outputs.php-min }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ steps.versions.outputs.php-min }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml index 75b97938e8..cf6cbd1389 100644 --- a/.github/workflows/lint-php.yml +++ b/.github/workflows/lint-php.yml @@ -48,7 +48,7 @@ jobs: persist-credentials: false - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ matrix.php-versions }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml index 04d855b56d..2b2340a86d 100644 --- a/.github/workflows/openapi.yml +++ b/.github/workflows/openapi.yml @@ -35,7 +35,7 @@ jobs: uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - name: Set up php - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ steps.php_versions.outputs.php-available }} extensions: xml diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index 68a18d94ac..3e553bde41 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -108,7 +108,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml index 31e26159eb..8ff705284c 100644 --- a/.github/workflows/phpunit-mysql.yml +++ b/.github/workflows/phpunit-mysql.yml @@ -106,7 +106,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index b75071166e..d8f8613f3d 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -109,7 +109,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 082165e27f..5ed27c87b6 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -99,7 +99,7 @@ jobs: path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index 41881c6ca8..5f17f6216c 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -36,7 +36,7 @@ jobs: run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml - name: Set up php${{ steps.versions.outputs.php-available }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ steps.versions.outputs.php-available }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite diff --git a/.github/workflows/update-nextcloud-ocp.yml b/.github/workflows/update-nextcloud-ocp.yml index 2d006f317e..1cb5219952 100644 --- a/.github/workflows/update-nextcloud-ocp.yml +++ b/.github/workflows/update-nextcloud-ocp.yml @@ -39,7 +39,7 @@ jobs: - name: Set up php8.2 if: steps.checkout.outcome == 'success' - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: 8.2 # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/update-psalm-baseline.yml b/.github/workflows/update-psalm-baseline.yml index 8ff03fecbc..781e6e32cc 100644 --- a/.github/workflows/update-psalm-baseline.yml +++ b/.github/workflows/update-psalm-baseline.yml @@ -38,7 +38,7 @@ jobs: uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - name: Set up php${{ steps.versions.outputs.php-available }} - uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4 + uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5 with: php-version: ${{ steps.versions.outputs.php-available }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite From 470c9d1cdde9c7a24338e543e6b6f1cd7a60485a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 20:47:49 +0000 Subject: [PATCH 0320/5910] chore(deps-dev): Bump rector/rector in /vendor-bin/rector Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.1.4 to 2.1.7. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/2.1.4...2.1.7) --- updated-dependencies: - dependency-name: rector/rector dependency-version: 2.1.7 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- vendor-bin/rector/composer.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 28472d0050..c4fcaaa0dc 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/composer.lock @@ -122,16 +122,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.22", + "version": "2.1.28", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4" + "reference": "578fa296a166605d97b94091f724f1257185d278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/578fa296a166605d97b94091f724f1257185d278", + "reference": "578fa296a166605d97b94091f724f1257185d278", "shasum": "" }, "require": { @@ -176,7 +176,7 @@ "type": "github" } ], - "time": "2025-08-04T19:17:37+00:00" + "time": "2025-09-19T08:58:49+00:00" }, { "name": "psr/clock", @@ -381,16 +381,16 @@ }, { "name": "rector/rector", - "version": "2.1.4", + "version": "2.1.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3" + "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/fe613c528819222f8686a9a037a315ef9d4915b3", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/c34cc07c4698f007a20dc5c99ff820089ae413ce", + "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce", "shasum": "" }, "require": { @@ -429,7 +429,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.1.4" + "source": "https://github.com/rectorphp/rector/tree/2.1.7" }, "funding": [ { @@ -437,7 +437,7 @@ "type": "github" } ], - "time": "2025-08-15T14:41:36+00:00" + "time": "2025-09-10T11:13:58+00:00" }, { "name": "webmozart/assert", From 3fe4459527ffe2f446d3da7c964cd7f8496b5759 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Thu, 25 Sep 2025 02:31:26 +0000 Subject: [PATCH 0321/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/el.js | 1 + l10n/el.json | 1 + l10n/kab.js | 5 +++++ l10n/kab.json | 5 +++++ 4 files changed, 12 insertions(+) diff --git a/l10n/el.js b/l10n/el.js index de731448e3..ee640704a4 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -70,6 +70,7 @@ OC.L10N.register( "Open file" : "Άνοιγμα αρχείου", "Document not available for signature." : "Το έγγραφο δεν είναι διαθέσιμο για υπογραφή.", "Administration" : "Διαχείριση", + "pending" : "εκκρεμεί", "Open sidebar" : "Άνοιγμα πλευρικής στήλης", "Details" : "Λεπτομέρειες", "Certificate" : "Πιστοποιητικό", diff --git a/l10n/el.json b/l10n/el.json index 0342fe208a..bdc11fb5a7 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -68,6 +68,7 @@ "Open file" : "Άνοιγμα αρχείου", "Document not available for signature." : "Το έγγραφο δεν είναι διαθέσιμο για υπογραφή.", "Administration" : "Διαχείριση", + "pending" : "εκκρεμεί", "Open sidebar" : "Άνοιγμα πλευρικής στήλης", "Details" : "Λεπτομέρειες", "Certificate" : "Πιστοποιητικό", diff --git a/l10n/kab.js b/l10n/kab.js index f39bc74dd1..dbab1ba38d 100644 --- a/l10n/kab.js +++ b/l10n/kab.js @@ -19,6 +19,7 @@ OC.L10N.register( "Settings" : "Iɣewwaṛen", "Loading …" : "Asali ...", "Name" : "Nom", + "Searching …" : "Anadi …", "Choose" : "Fren", "Send" : "Tuzna", "Previous" : "Ɣer deffir", @@ -33,7 +34,11 @@ OC.L10N.register( "Enter a password" : "Sekcem awal n uɛeddi", "Page not found" : "Ulac asebter", "Today" : "Ass-a", + "Last 7 days" : "7 n wussan yezrin", + "Last 30 days" : "30 n wussan aya yezrin", + "Last year ({year})" : "Ilindi ({year})", "Modified" : "Yettwabeddel", + "{fileCount} files" : "{fileCount} n ifuyla", "Password reset" : "Awennez n wawal uffir", "New password" : "Awal uffir amaynut", "Remove" : "Kkes", diff --git a/l10n/kab.json b/l10n/kab.json index 8db19a5d18..51db4149ef 100644 --- a/l10n/kab.json +++ b/l10n/kab.json @@ -17,6 +17,7 @@ "Settings" : "Iɣewwaṛen", "Loading …" : "Asali ...", "Name" : "Nom", + "Searching …" : "Anadi …", "Choose" : "Fren", "Send" : "Tuzna", "Previous" : "Ɣer deffir", @@ -31,7 +32,11 @@ "Enter a password" : "Sekcem awal n uɛeddi", "Page not found" : "Ulac asebter", "Today" : "Ass-a", + "Last 7 days" : "7 n wussan yezrin", + "Last 30 days" : "30 n wussan aya yezrin", + "Last year ({year})" : "Ilindi ({year})", "Modified" : "Yettwabeddel", + "{fileCount} files" : "{fileCount} n ifuyla", "Password reset" : "Awennez n wawal uffir", "New password" : "Awal uffir amaynut", "Remove" : "Kkes", From 3b693c2aab7a76ff1aebf9d92f8156697f522b27 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Fri, 26 Sep 2025 02:32:09 +0000 Subject: [PATCH 0322/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/mk.js | 2 +- l10n/mk.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/l10n/mk.js b/l10n/mk.js index c0c00437a8..d924c0102b 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -77,7 +77,7 @@ OC.L10N.register( "Last year ({year})" : "Минатата година ({year})", "Modified" : "Изменето", "Active filters" : "Активни филтри", - "Remove filter" : "Острани филтер", + "Remove filter" : "Отстрани филтер", "Switch to list view" : "Прикажи поглед во листа", "Switch to grid view" : "Прикажи поглед во мрежа", "{fileCount} files" : "{fileCount} датотеки", diff --git a/l10n/mk.json b/l10n/mk.json index 3c00ee5122..3e5c13d472 100644 --- a/l10n/mk.json +++ b/l10n/mk.json @@ -75,7 +75,7 @@ "Last year ({year})" : "Минатата година ({year})", "Modified" : "Изменето", "Active filters" : "Активни филтри", - "Remove filter" : "Острани филтер", + "Remove filter" : "Отстрани филтер", "Switch to list view" : "Прикажи поглед во листа", "Switch to grid view" : "Прикажи поглед во мрежа", "{fileCount} files" : "{fileCount} датотеки", From 84d926e772bfe1e7129e8a4672b6eead7c2ca691 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sat, 27 Sep 2025 02:32:55 +0000 Subject: [PATCH 0323/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/be.js | 4 ++++ l10n/be.json | 4 ++++ l10n/cs.js | 1 + l10n/cs.json | 1 + 4 files changed, 10 insertions(+) diff --git a/l10n/be.js b/l10n/be.js index 0f9dc9c834..83825fe2da 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -87,6 +87,7 @@ OC.L10N.register( "Password reset" : "Скід пароля", "Current password" : "Бягучы пароль", "New password" : "Новы пароль", + "I will not use root certificate" : "Я не буду выкарыстоўваць каранёвы сертыфікат", "Remove" : "Выдаліць", "Message" : "Паведамленне", "Resource" : "Рэсурс", @@ -95,6 +96,9 @@ OC.L10N.register( "The first message is not considered a notification" : "Першае паведамленне не лічыцца апавяшчэннем", "off" : "выкл.", "on" : "укл.", + "Root certificate data" : "Даныя каранёвага сертыфіката", + "Generate root certificate" : "Згенерыраваць каранёвы сертыфікат", + "Regenerate root certificate" : "Згенерыраваць каранёвы сертыфікат паўторна", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/be.json b/l10n/be.json index ad15713e47..04c7d1f0a6 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -85,6 +85,7 @@ "Password reset" : "Скід пароля", "Current password" : "Бягучы пароль", "New password" : "Новы пароль", + "I will not use root certificate" : "Я не буду выкарыстоўваць каранёвы сертыфікат", "Remove" : "Выдаліць", "Message" : "Паведамленне", "Resource" : "Рэсурс", @@ -93,6 +94,9 @@ "The first message is not considered a notification" : "Першае паведамленне не лічыцца апавяшчэннем", "off" : "выкл.", "on" : "укл.", + "Root certificate data" : "Даныя каранёвага сертыфіката", + "Generate root certificate" : "Згенерыраваць каранёвы сертыфікат", + "Regenerate root certificate" : "Згенерыраваць каранёвы сертыфікат паўторна", "Yes" : "Так", "No" : "Не", "Description only" : "Толькі апісанне", diff --git a/l10n/cs.js b/l10n/cs.js index e5d5b0d96c..08c8c3ea1e 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -381,6 +381,7 @@ OC.L10N.register( "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", "The first message is not considered a notification" : "První zpráva není považována za upozornění", "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", + "off" : "vypnuto", "on" : "v", "Turn {reminderState} auto reminders" : " {reminderState} automatické připomínky", "First reminder after (days)" : "První připomínka po uplynutí (dnů)", diff --git a/l10n/cs.json b/l10n/cs.json index 0a3f53652c..dbe5a82ccb 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -379,6 +379,7 @@ "Send time (HH:mm)" : "Okamžik odeslání (HH:mm)", "The first message is not considered a notification" : "První zpráva není považována za upozornění", "Zero or empty is no reminder." : "Nula nebo prázdné znamená žádná připomínka.", + "off" : "vypnuto", "on" : "v", "Turn {reminderState} auto reminders" : " {reminderState} automatické připomínky", "First reminder after (days)" : "První připomínka po uplynutí (dnů)", From 61bc7c74d4654332ba6842bf4fa4007f203c1dad Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Sun, 28 Sep 2025 02:32:54 +0000 Subject: [PATCH 0324/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/kab.js | 7 ++++++- l10n/kab.json | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/l10n/kab.js b/l10n/kab.js index dbab1ba38d..1ce4ffd00f 100644 --- a/l10n/kab.js +++ b/l10n/kab.js @@ -11,6 +11,7 @@ OC.L10N.register( "File is too big" : "Afaylu-agi bezzaf meqqer", "File not found" : "Ulac afaylu", "Email" : "Imayl", + "Text" : "Aḍris", "Upload" : "Sili", "Delete" : "Kkes", "Save" : "Sekles", @@ -26,13 +27,17 @@ OC.L10N.register( "Next" : "Uḍfir", "Confirm" : "Serggeg", "Open file" : "Ldi afaylu", + "Administration" : "Tadbelt", + "Open sidebar" : "Ldi-d afeggag adisan", "Details" : "Talqayt", "Type" : "Anaw", "Status" : "État", "Actions" : "Tigawin", + "Create account" : "Snulfu-d amiḍan", "Password" : "Awal uffir", "Enter a password" : "Sekcem awal n uɛeddi", "Page not found" : "Ulac asebter", + "Ok" : "Ih", "Today" : "Ass-a", "Last 7 days" : "7 n wussan yezrin", "Last 30 days" : "30 n wussan aya yezrin", @@ -43,7 +48,7 @@ OC.L10N.register( "New password" : "Awal uffir amaynut", "Remove" : "Kkes", "Message" : "Izen", - "Yes" : "Oui", + "Yes" : "Ih", "No" : "Uhu", "Forgot password?" : "Tettud awal uffir?" }, diff --git a/l10n/kab.json b/l10n/kab.json index 51db4149ef..44ff7c0195 100644 --- a/l10n/kab.json +++ b/l10n/kab.json @@ -9,6 +9,7 @@ "File is too big" : "Afaylu-agi bezzaf meqqer", "File not found" : "Ulac afaylu", "Email" : "Imayl", + "Text" : "Aḍris", "Upload" : "Sili", "Delete" : "Kkes", "Save" : "Sekles", @@ -24,13 +25,17 @@ "Next" : "Uḍfir", "Confirm" : "Serggeg", "Open file" : "Ldi afaylu", + "Administration" : "Tadbelt", + "Open sidebar" : "Ldi-d afeggag adisan", "Details" : "Talqayt", "Type" : "Anaw", "Status" : "État", "Actions" : "Tigawin", + "Create account" : "Snulfu-d amiḍan", "Password" : "Awal uffir", "Enter a password" : "Sekcem awal n uɛeddi", "Page not found" : "Ulac asebter", + "Ok" : "Ih", "Today" : "Ass-a", "Last 7 days" : "7 n wussan yezrin", "Last 30 days" : "30 n wussan aya yezrin", @@ -41,7 +46,7 @@ "New password" : "Awal uffir amaynut", "Remove" : "Kkes", "Message" : "Izen", - "Yes" : "Oui", + "Yes" : "Ih", "No" : "Uhu", "Forgot password?" : "Tettud awal uffir?" },"pluralForm" :"nplurals=2; plural=(n != 1);" From 6784f2a2ad7a425db071cb1a382d3a8cdc114f7a Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 09:42:15 -0300 Subject: [PATCH 0325/5910] chore: bump PHP dependencies Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- composer.lock | 83 +++-- tests/integration/composer.lock | 163 ++++---- vendor-bin/coding-standard/composer.lock | 28 +- vendor-bin/php-coveralls/composer.lock | 49 ++- vendor-bin/php-scoper/composer.lock | 25 +- vendor-bin/phpunit/composer.lock | 456 ++++++++++++++++------- vendor-bin/psalm/composer.lock | 25 +- vendor-bin/rector/composer.lock | 26 +- 8 files changed, 545 insertions(+), 310 deletions(-) diff --git a/composer.lock b/composer.lock index 7e8e0436d0..768590bc2e 100644 --- a/composer.lock +++ b/composer.lock @@ -119,16 +119,16 @@ }, { "name": "dasprid/enum", - "version": "1.0.6", + "version": "1.0.7", "source": { "type": "git", "url": "https://github.com/DASPRiD/Enum.git", - "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90" + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90", - "reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce", "shasum": "" }, "require": { @@ -163,9 +163,9 @@ ], "support": { "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.6" + "source": "https://github.com/DASPRiD/Enum/tree/1.0.7" }, - "time": "2024-08-09T14:30:48+00:00" + "time": "2025-09-16T12:23:56+00:00" }, { "name": "endroid/qr-code", @@ -832,24 +832,26 @@ }, { "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -895,7 +897,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:36:18+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", @@ -1645,12 +1647,12 @@ "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "851f4248065d96ee9d4971bb671b363f7dbd7850" + "reference": "78495561326ae067174199f39babe103ff0763cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/851f4248065d96ee9d4971bb671b363f7dbd7850", - "reference": "851f4248065d96ee9d4971bb671b363f7dbd7850", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/78495561326ae067174199f39babe103ff0763cc", + "reference": "78495561326ae067174199f39babe103ff0763cc", "shasum": "" }, "require": { @@ -1664,7 +1666,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "32.0.0-dev" + "dev-master": "33.0.0-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -1686,7 +1688,7 @@ "issues": "https://github.com/nextcloud-deps/ocp/issues", "source": "https://github.com/nextcloud-deps/ocp/tree/master" }, - "time": "2025-08-30T00:45:22+00:00" + "time": "2025-09-29T00:49:48+00:00" }, { "name": "psr/clock", @@ -1845,12 +1847,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "e7589e01dc8452bfecb4c8df977346cd3132650f" + "reference": "684ef27cdce62b6562f77a92dc76bdfb46542a2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e7589e01dc8452bfecb4c8df977346cd3132650f", - "reference": "e7589e01dc8452bfecb4c8df977346cd3132650f", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/684ef27cdce62b6562f77a92dc76bdfb46542a2d", + "reference": "684ef27cdce62b6562f77a92dc76bdfb46542a2d", "shasum": "" }, "conflict": { @@ -1988,6 +1990,7 @@ "dapphp/securimage": "<3.6.6", "darylldoyle/safe-svg": "<1.9.10", "datadog/dd-trace": ">=0.30,<0.30.2", + "datahihi1/tiny-env": "<1.0.3|>=1.0.9,<1.0.11", "datatables/datatables": "<1.10.10", "david-garcia/phpwhois": "<=4.3.1", "dbrisinajumi/d2files": "<1", @@ -2137,6 +2140,7 @@ "gogentooss/samlbase": "<1.2.7", "google/protobuf": "<3.4", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gp247/core": "<1.1.24", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", "grumpydictator/firefly-iii": "<6.1.17", @@ -2238,6 +2242,7 @@ "laravel/socialite": ">=1,<2.0.10", "latte/latte": "<2.10.8", "lavalite/cms": "<=9|==10.1", + "lavitto/typo3-form-to-database": "<2.2.5|>=3,<3.2.2|>=4,<4.2.3|>=5,<5.0.2", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<2.7", "league/flysystem": "<1.1.4|>=2,<2.1.1", @@ -2259,13 +2264,14 @@ "luyadev/yii-helpers": "<1.2.1", "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", "maestroerror/php-heic-to-jpg": "<1.0.5", - "magento/community-edition": "<2.4.5.0-patch14|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch12|>=2.4.7.0-beta1,<2.4.7.0-patch7|>=2.4.8.0-beta1,<2.4.8.0-patch1", + "magento/community-edition": "<=2.4.5.0-patch14|==2.4.6|>=2.4.6.0-patch1,<=2.4.6.0-patch12|>=2.4.7.0-beta1,<=2.4.7.0-patch7|>=2.4.8.0-beta1,<=2.4.8.0-patch2|>=2.4.9.0-alpha1,<=2.4.9.0-alpha2|==2.4.9", "magento/core": "<=1.9.4.5", "magento/magento1ce": "<1.9.4.3-dev", "magento/magento1ee": ">=1,<1.14.4.3-dev", "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", "magento/project-community-edition": "<=2.0.2", "magneto/core": "<1.9.4.4-dev", + "mahocommerce/maho": "<25.9", "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", "manogi/nova-tiptap": "<=3.2.6", @@ -2274,7 +2280,7 @@ "marshmallow/nova-tiptap": "<5.7", "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", + "mautic/core": "<5.2.8|>=6.0.0.0-alpha,<6.0.5", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", @@ -2337,6 +2343,7 @@ "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", "novaksolutions/infusionsoft-php-sdk": "<1", + "novosga/novosga": "<=2.2.9", "nukeviet/nukeviet": "<4.5.02", "nyholm/psr7": "<1.6.1", "nystudio107/craft-seomatic": "<3.4.12", @@ -2420,7 +2427,7 @@ "pixelfed/pixelfed": "<0.12.5", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.25.2", + "pocketmine/pocketmine-mp": "<5.32.1", "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", @@ -2428,7 +2435,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.6", + "prestashop/prestashop": "<8.2.3", "prestashop/productcomments": "<5.0.2", "prestashop/ps_contactinfo": "<=3.3.2", "prestashop/ps_emailsubscription": "<2.6.1", @@ -2467,7 +2474,7 @@ "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", "rudloff/alltube": "<3.0.3", "rudloff/rtmpdump-bin": "<=2.3.1", - "s-cart/core": "<6.9", + "s-cart/core": "<=9.0.5", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", @@ -2478,10 +2485,10 @@ "setasign/fpdi": "<2.6.4", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", + "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7,<6.7.2.1-dev", "shopware/platform": "<=6.6.10.4|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", + "shopware/shopware": "<=5.7.17|>=6.7,<6.7.2.1-dev", "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", "shopxo/shopxo": "<=6.4", "showdoc/showdoc": "<2.10.4", @@ -2523,7 +2530,7 @@ "slim/slim": "<2.6", "slub/slub-events": "<3.0.3", "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<8.1", + "snipe/snipe-it": "<8.1.18", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", "solspace/craft-freeform": ">=5,<5.10.16", @@ -2539,6 +2546,7 @@ "starcitizentools/citizen-skin": ">=1.9.4,<3.4", "starcitizentools/short-description": ">=4,<4.0.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", + "starcitizenwiki/embedvideo": "<=4", "statamic/cms": "<=5.16", "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<=2.1.64", @@ -2629,14 +2637,14 @@ "tribalsystems/zenario": "<=9.7.61188", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", - "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", + "twbs/bootstrap": "<3.4.1|>=4,<=4.6.2", "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", - "typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-beuser": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", + "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", + "typo3/cms-dashboard": ">=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-felogin": ">=4.2,<4.2.3", @@ -2646,10 +2654,13 @@ "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2", "typo3/cms-lowlevel": ">=11,<=11.5.41", + "typo3/cms-recordlist": ">=11,<11.5.48", + "typo3/cms-recycler": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/cms-scheduler": ">=11,<=11.5.41", "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-workspaces": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -2710,7 +2721,7 @@ "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yab/quarx": "<2.4.5", - "yeswiki/yeswiki": "<4.5.4", + "yeswiki/yeswiki": "<=4.5.4", "yetiforce/yetiforce-crm": "<6.5", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", @@ -2802,7 +2813,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T15:04:47+00:00" + "time": "2025-09-24T21:05:21+00:00" } ], "aliases": [], diff --git a/tests/integration/composer.lock b/tests/integration/composer.lock index b2e04c14d9..d71b10c0e7 100644 --- a/tests/integration/composer.lock +++ b/tests/integration/composer.lock @@ -1621,16 +1621,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.53", + "version": "10.5.58", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "32768472ebfb6969e6c7399f1c7b09009723f653" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/32768472ebfb6969e6c7399f1c7b09009723f653", - "reference": "32768472ebfb6969e6c7399f1c7b09009723f653", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -1651,10 +1651,10 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", + "sebastian/comparator": "^5.0.4", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", + "sebastian/exporter": "^5.1.4", "sebastian/global-state": "^6.0.2", "sebastian/object-enumerator": "^5.0.0", "sebastian/recursion-context": "^5.0.1", @@ -1702,7 +1702,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.53" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -1726,7 +1726,7 @@ "type": "tidelift" } ], - "time": "2025-08-20T14:40:06+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "psr-discovery/discovery", @@ -2595,16 +2595,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.3", + "version": "5.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e", + "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e", "shasum": "" }, "require": { @@ -2660,15 +2660,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2024-10-18T14:56:07+00:00" + "time": "2025-09-07T05:25:07+00:00" }, { "name": "sebastian/complexity", @@ -2861,16 +2873,16 @@ }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { @@ -2879,7 +2891,7 @@ "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -2927,15 +2939,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T07:17:12+00:00" + "time": "2025-09-24T06:09:11+00:00" }, { "name": "sebastian/global-state", @@ -3356,16 +3380,16 @@ }, { "name": "symfony/config", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e" + "reference": "f18dc5926cb203e125956987def795d052ee774e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e", + "url": "https://api.github.com/repos/symfony/config/zipball/f18dc5926cb203e125956987def795d052ee774e", + "reference": "f18dc5926cb203e125956987def795d052ee774e", "shasum": "" }, "require": { @@ -3411,7 +3435,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.24" + "source": "https://github.com/symfony/config/tree/v6.4.26" }, "funding": [ { @@ -3431,20 +3455,20 @@ "type": "tidelift" } ], - "time": "2025-07-26T13:50:30+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -3509,7 +3533,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -3529,20 +3553,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3" + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/900da8a42eceeb4a13a0ec34caa7db49328daff3", - "reference": "900da8a42eceeb4a13a0ec34caa7db49328daff3", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5f311eaf0b321f8ec640f6bae12da43a14026898", + "reference": "5f311eaf0b321f8ec640f6bae12da43a14026898", "shasum": "" }, "require": { @@ -3594,7 +3618,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.26" }, "funding": [ { @@ -3614,7 +3638,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3915,16 +3939,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181" + "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/b8e9dce2d8acba3c32af467bb58e0c3656886181", - "reference": "b8e9dce2d8acba3c32af467bb58e0c3656886181", + "url": "https://api.github.com/repos/symfony/http-client/zipball/6740cdc1a3bffa127966b6056e883b3fe3709849", + "reference": "6740cdc1a3bffa127966b6056e883b3fe3709849", "shasum": "" }, "require": { @@ -3989,7 +4013,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.25" + "source": "https://github.com/symfony/http-client/tree/v6.4.26" }, "funding": [ { @@ -4009,7 +4033,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T07:01:16+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/http-client-contracts", @@ -4589,16 +4613,16 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -4612,7 +4636,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -4655,7 +4678,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -4675,20 +4698,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "symfony/translation", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", - "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", + "url": "https://api.github.com/repos/symfony/translation/zipball/c8559fe25c7ee7aa9d28f228903a46db008156a4", + "reference": "c8559fe25c7ee7aa9d28f228903a46db008156a4", "shasum": "" }, "require": { @@ -4754,7 +4777,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.24" + "source": "https://github.com/symfony/translation/tree/v6.4.26" }, "funding": [ { @@ -4774,7 +4797,7 @@ "type": "tidelift" } ], - "time": "2025-07-30T17:30:48+00:00" + "time": "2025-09-05T18:17:25+00:00" }, { "name": "symfony/translation-contracts", @@ -4856,16 +4879,16 @@ }, { "name": "symfony/var-exporter", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358" + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", - "reference": "4ff50a1b7c75d1d596aca50899d0c8c7e3de8358", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/466fcac5fa2e871f83d31173f80e9c2684743bfc", + "reference": "466fcac5fa2e871f83d31173f80e9c2684743bfc", "shasum": "" }, "require": { @@ -4913,7 +4936,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.25" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.26" }, "funding": [ { @@ -4933,20 +4956,20 @@ "type": "tidelift" } ], - "time": "2025-08-18T13:06:32+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", "shasum": "" }, "require": { @@ -4989,7 +5012,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.25" + "source": "https://github.com/symfony/yaml/tree/v6.4.26" }, "funding": [ { @@ -5009,7 +5032,7 @@ "type": "tidelift" } ], - "time": "2025-08-26T16:59:00+00:00" + "time": "2025-09-26T15:07:38+00:00" }, { "name": "theseer/tokenizer", diff --git a/vendor-bin/coding-standard/composer.lock b/vendor-bin/coding-standard/composer.lock index b1e8052ce8..3b680b3cd1 100644 --- a/vendor-bin/coding-standard/composer.lock +++ b/vendor-bin/coding-standard/composer.lock @@ -9,26 +9,26 @@ "packages-dev": [ { "name": "kubawerlos/php-cs-fixer-custom-fixers", - "version": "v3.32.0", + "version": "v3.35.1", "source": { "type": "git", "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", - "reference": "c3a815a496f5cd6356726902f421013cbb7ba3f3" + "reference": "2a35f80ae24ca77443a7af1599c3a3db1b6bd395" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/c3a815a496f5cd6356726902f421013cbb7ba3f3", - "reference": "c3a815a496f5cd6356726902f421013cbb7ba3f3", + "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/2a35f80ae24ca77443a7af1599c3a3db1b6bd395", + "reference": "2a35f80ae24ca77443a7af1599c3a3db1b6bd395", "shasum": "" }, "require": { "ext-filter": "*", "ext-tokenizer": "*", - "friendsofphp/php-cs-fixer": "^3.85", + "friendsofphp/php-cs-fixer": "^3.87", "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.6.22 || 10.5.45 || ^11.5.7" + "phpunit/phpunit": "^9.6.24 || ^10.5.51 || ^11.5.32" }, "type": "library", "autoload": { @@ -49,7 +49,7 @@ "description": "A set of custom fixers for PHP CS Fixer", "support": { "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", - "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.32.0" + "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.35.1" }, "funding": [ { @@ -57,7 +57,7 @@ "type": "github" } ], - "time": "2025-08-01T06:10:10+00:00" + "time": "2025-09-28T18:43:35+00:00" }, { "name": "nextcloud/coding-standard", @@ -106,16 +106,16 @@ }, { "name": "php-cs-fixer/shim", - "version": "v3.87.0", + "version": "v3.88.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/shim.git", - "reference": "fbaef33f427318ed46ed8384570bc0813d892f91" + "reference": "b70300670e5a37dd3a9cb0f188e186c8c206f70f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/fbaef33f427318ed46ed8384570bc0813d892f91", - "reference": "fbaef33f427318ed46ed8384570bc0813d892f91", + "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/b70300670e5a37dd3a9cb0f188e186c8c206f70f", + "reference": "b70300670e5a37dd3a9cb0f188e186c8c206f70f", "shasum": "" }, "require": { @@ -152,9 +152,9 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/shim/issues", - "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.87.0" + "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.88.2" }, - "time": "2025-09-02T10:53:05+00:00" + "time": "2025-09-27T00:25:01+00:00" } ], "aliases": [], diff --git a/vendor-bin/php-coveralls/composer.lock b/vendor-bin/php-coveralls/composer.lock index 5747cb6dd8..7238b07785 100644 --- a/vendor-bin/php-coveralls/composer.lock +++ b/vendor-bin/php-coveralls/composer.lock @@ -725,16 +725,16 @@ }, { "name": "symfony/config", - "version": "v6.4.24", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e" + "reference": "f18dc5926cb203e125956987def795d052ee774e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/80e2cf005cf17138c97193be0434cdcfd1b2212e", - "reference": "80e2cf005cf17138c97193be0434cdcfd1b2212e", + "url": "https://api.github.com/repos/symfony/config/zipball/f18dc5926cb203e125956987def795d052ee774e", + "reference": "f18dc5926cb203e125956987def795d052ee774e", "shasum": "" }, "require": { @@ -780,7 +780,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.24" + "source": "https://github.com/symfony/config/tree/v6.4.26" }, "funding": [ { @@ -800,20 +800,20 @@ "type": "tidelift" } ], - "time": "2025-07-26T13:50:30+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -878,7 +878,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -898,7 +898,7 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1523,16 +1523,16 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -1546,7 +1546,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -1589,7 +1588,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -1609,20 +1608,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565" + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e54b060bc9c3dc3d4258bf0d165d0064e755f565", - "reference": "e54b060bc9c3dc3d4258bf0d165d0064e755f565", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", + "reference": "0fc8b966fd0dcaab544ae59bfc3a433f048c17b0", "shasum": "" }, "require": { @@ -1665,7 +1664,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.25" + "source": "https://github.com/symfony/yaml/tree/v6.4.26" }, "funding": [ { @@ -1685,7 +1684,7 @@ "type": "tidelift" } ], - "time": "2025-08-26T16:59:00+00:00" + "time": "2025-09-26T15:07:38+00:00" } ], "aliases": [], diff --git a/vendor-bin/php-scoper/composer.lock b/vendor-bin/php-scoper/composer.lock index 485b527ce4..d7074dd71b 100644 --- a/vendor-bin/php-scoper/composer.lock +++ b/vendor-bin/php-scoper/composer.lock @@ -448,16 +448,16 @@ }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -522,7 +522,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -542,7 +542,7 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1245,16 +1245,16 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -1268,7 +1268,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -1311,7 +1310,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -1331,7 +1330,7 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "thecodingmachine/safe", diff --git a/vendor-bin/phpunit/composer.lock b/vendor-bin/phpunit/composer.lock index 614f8e19aa..36c1263c6e 100644 --- a/vendor-bin/phpunit/composer.lock +++ b/vendor-bin/phpunit/composer.lock @@ -9,27 +9,27 @@ "packages-dev": [ { "name": "byjg/serializer", - "version": "5.1.x-dev", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/byjg/php-serializer.git", - "reference": "516944fb99890e41a088ef09772a45406ddfe936" + "reference": "1a380318533355badf9b2090f50bbc300fa3fd34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/byjg/php-serializer/zipball/516944fb99890e41a088ef09772a45406ddfe936", - "reference": "516944fb99890e41a088ef09772a45406ddfe936", + "url": "https://api.github.com/repos/byjg/php-serializer/zipball/1a380318533355badf9b2090f50bbc300fa3fd34", + "reference": "1a380318533355badf9b2090f50bbc300fa3fd34", "shasum": "" }, "require": { "ext-json": "*", "ext-simplexml": "*", - "php": ">=8.1 <8.5", + "php": ">=8.1 <8.4", "symfony/yaml": "> 4" }, "require-dev": { - "phpunit/phpunit": "^10.5|^11.5", - "vimeo/psalm": "^5.9|^6.2" + "phpunit/phpunit": "^9.6", + "vimeo/psalm": "^5.9" }, "suggest": { "ext-curl": "*" @@ -47,7 +47,7 @@ "description": "Serialize any object into array and format it JSON or XML", "support": { "issues": "https://github.com/byjg/php-serializer/issues", - "source": "https://github.com/byjg/php-serializer/tree/5.1" + "source": "https://github.com/byjg/php-serializer/tree/5.0" }, "funding": [ { @@ -55,7 +55,7 @@ "type": "github" } ], - "time": "2025-03-21T20:49:35+00:00" + "time": "2024-10-27T15:09:25+00:00" }, { "name": "byjg/swagger-test", @@ -107,16 +107,16 @@ }, { "name": "byjg/uri", - "version": "5.1.x-dev", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/byjg/php-uri.git", - "reference": "bcc2f71873124f919d0f76b18333a91b2e7b5d96" + "reference": "fc3e8d3b50159fdc0abd4896ac8e8f68fa01732f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/byjg/php-uri/zipball/bcc2f71873124f919d0f76b18333a91b2e7b5d96", - "reference": "bcc2f71873124f919d0f76b18333a91b2e7b5d96", + "url": "https://api.github.com/repos/byjg/php-uri/zipball/fc3e8d3b50159fdc0abd4896ac8e8f68fa01732f", + "reference": "fc3e8d3b50159fdc0abd4896ac8e8f68fa01732f", "shasum": "" }, "require": { @@ -127,8 +127,8 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "^10.5|^11.5", - "vimeo/psalm": "^5.9|^6.2" + "phpunit/phpunit": "^9.6", + "vimeo/psalm": "^6.0" }, "type": "project", "autoload": { @@ -143,7 +143,7 @@ "description": "An implementation of PSR-7 Uri Interface ", "support": { "issues": "https://github.com/byjg/php-uri/issues", - "source": "https://github.com/byjg/php-uri/tree/5.1" + "source": "https://github.com/byjg/php-uri/tree/5.0" }, "funding": [ { @@ -151,27 +151,27 @@ "type": "github" } ], - "time": "2025-03-20T18:56:56+00:00" + "time": "2024-11-30T15:33:08+00:00" }, { "name": "byjg/webrequest", - "version": "5.1.x-dev", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/byjg/php-webrequest.git", - "reference": "c216c5da143407d4a030a405b1c56b4eb36327c5" + "reference": "07bdfaca2fc410f1084c3b56aa5258f918d4ec0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/byjg/php-webrequest/zipball/c216c5da143407d4a030a405b1c56b4eb36327c5", - "reference": "c216c5da143407d4a030a405b1c56b4eb36327c5", + "url": "https://api.github.com/repos/byjg/php-webrequest/zipball/07bdfaca2fc410f1084c3b56aa5258f918d4ec0e", + "reference": "07bdfaca2fc410f1084c3b56aa5258f918d4ec0e", "shasum": "" }, "require": { - "byjg/uri": "^5.1", + "byjg/uri": "^5.0", "ext-curl": "*", "ext-json": "*", - "php": ">=8.1 <8.5", + "php": ">=8.1 <8.4", "psr/http-client": "^1.0", "psr/http-factory": "^1.0|^1.1", "psr/http-message": "^1.0|^2.0" @@ -183,8 +183,8 @@ }, "require-dev": { "ext-soap": "*", - "phpunit/phpunit": "^10.5|^11.5", - "vimeo/psalm": "^5.9|^6.2" + "phpunit/phpunit": "^9.6", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -205,7 +205,7 @@ "description": "A lightweight and highly customized CURL wrapper for making RESt calls using PSR7 implementation and a wrapper for call dynamically SOAP requests.", "support": { "issues": "https://github.com/byjg/php-webrequest/issues", - "source": "https://github.com/byjg/php-webrequest/tree/5.1" + "source": "https://github.com/byjg/php-webrequest/tree/5.0" }, "funding": [ { @@ -213,32 +213,32 @@ "type": "github" } ], - "time": "2025-03-21T19:39:17+00:00" + "time": "2025-01-19T20:27:02+00:00" }, { "name": "byjg/xmlutil", - "version": "5.1.x-dev", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/byjg/php-xmlutil.git", - "reference": "9ce7cad619ee394d79d771cbed522a5568c60dc4" + "reference": "5880d0ccf9e401ec84704b154ad5434c9db18aa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/byjg/php-xmlutil/zipball/9ce7cad619ee394d79d771cbed522a5568c60dc4", - "reference": "9ce7cad619ee394d79d771cbed522a5568c60dc4", + "url": "https://api.github.com/repos/byjg/php-xmlutil/zipball/5880d0ccf9e401ec84704b154ad5434c9db18aa0", + "reference": "5880d0ccf9e401ec84704b154ad5434c9db18aa0", "shasum": "" }, "require": { - "byjg/serializer": "^5.1", + "byjg/serializer": "^5.0", "ext-dom": "*", "ext-libxml": "*", "ext-simplexml": "*", - "php": ">=8.1 <8.5" + "php": ">=8.1 <8.4" }, "require-dev": { - "phpunit/phpunit": "^10.5|^11.5", - "vimeo/psalm": "^5.9|^6.2" + "phpunit/phpunit": "^9.6", + "vimeo/psalm": "^5.20" }, "type": "library", "autoload": { @@ -253,7 +253,7 @@ "description": "A utility class to make easy work with XML in PHP.", "support": { "issues": "https://github.com/byjg/php-xmlutil/issues", - "source": "https://github.com/byjg/php-xmlutil/tree/5.1" + "source": "https://github.com/byjg/php-xmlutil/tree/5.0" }, "funding": [ { @@ -261,7 +261,7 @@ "type": "github" } ], - "time": "2025-03-21T21:10:57+00:00" + "time": "2025-07-03T15:32:03+00:00" }, { "name": "donatj/mock-webserver", @@ -575,12 +575,12 @@ "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f" + "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f7c23a43eee861070ab4e88819a4e76a611c7e4f", - "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0da2d6679a3df45d6d720aa2e0d4568f82a32e46", + "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46", "shasum": "" }, "require": { @@ -626,7 +626,7 @@ "issues": "https://github.com/nikic/PHP-Parser/issues", "source": "https://github.com/nikic/PHP-Parser/tree/master" }, - "time": "2025-08-19T18:41:44+00:00" + "time": "2025-09-08T07:54:25+00:00" }, { "name": "phar-io/manifest", @@ -753,12 +753,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "89e694721a7721fccf4cc665dd3d75049984e97a" + "reference": "084db8a9091d709dad93a7730e9efe57ad6969d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/89e694721a7721fccf4cc665dd3d75049984e97a", - "reference": "89e694721a7721fccf4cc665dd3d75049984e97a", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/084db8a9091d709dad93a7730e9efe57ad6969d2", + "reference": "084db8a9091d709dad93a7730e9efe57ad6969d2", "shasum": "" }, "require": { @@ -821,9 +821,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2025-02-08T08:52:03+00:00" + "time": "2025-09-26T12:53:40+00:00" }, { "name": "phpunit/php-file-iterator", @@ -831,12 +843,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a0b641ac6e8afac78b8624153ebf4ff5c3a77e7b" + "reference": "97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a0b641ac6e8afac78b8624153ebf4ff5c3a77e7b", - "reference": "a0b641ac6e8afac78b8624153ebf4ff5c3a77e7b", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4", + "reference": "97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4", "shasum": "" }, "require": { @@ -882,9 +894,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2025-01-15T13:38:08+00:00" + "time": "2025-09-26T11:51:04+00:00" }, { "name": "phpunit/php-invoker", @@ -892,12 +916,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "494f140a724e216ebfbd2d54fd7726bd528cce6b" + "reference": "d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/494f140a724e216ebfbd2d54fd7726bd528cce6b", - "reference": "494f140a724e216ebfbd2d54fd7726bd528cce6b", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395", + "reference": "d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395", "shasum": "" }, "require": { @@ -946,9 +970,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker", + "type": "tidelift" } ], - "time": "2025-01-01T09:41:09+00:00" + "time": "2025-09-26T11:55:50+00:00" }, { "name": "phpunit/php-text-template", @@ -956,12 +992,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "d1073a6d469e281ee63941813ffd1f349fc54c2f" + "reference": "33ec41b1b3bc7b06f3e5443183d5be875a6a613c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d1073a6d469e281ee63941813ffd1f349fc54c2f", - "reference": "d1073a6d469e281ee63941813ffd1f349fc54c2f", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/33ec41b1b3bc7b06f3e5443183d5be875a6a613c", + "reference": "33ec41b1b3bc7b06f3e5443183d5be875a6a613c", "shasum": "" }, "require": { @@ -1006,9 +1042,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template", + "type": "tidelift" } ], - "time": "2025-01-01T09:41:39+00:00" + "time": "2025-09-26T12:00:11+00:00" }, { "name": "phpunit/php-timer", @@ -1016,12 +1064,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2896254767919e310fc03754d3038e7fc7d137bf" + "reference": "fb4639c8b216b81813c588d0adf1fe88ec66239e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2896254767919e310fc03754d3038e7fc7d137bf", - "reference": "2896254767919e310fc03754d3038e7fc7d137bf", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/fb4639c8b216b81813c588d0adf1fe88ec66239e", + "reference": "fb4639c8b216b81813c588d0adf1fe88ec66239e", "shasum": "" }, "require": { @@ -1066,9 +1114,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer", + "type": "tidelift" } ], - "time": "2025-01-01T09:42:19+00:00" + "time": "2025-09-26T12:05:28+00:00" }, { "name": "phpunit/phpunit", @@ -1076,12 +1136,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b4a1442ec0b03ae4c36b1468014f0e3ff1f24cd4" + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b4a1442ec0b03ae4c36b1468014f0e3ff1f24cd4", - "reference": "b4a1442ec0b03ae4c36b1468014f0e3ff1f24cd4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca", + "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca", "shasum": "" }, "require": { @@ -1102,10 +1162,10 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", + "sebastian/comparator": "^5.0.4", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", + "sebastian/exporter": "^5.1.4", "sebastian/global-state": "^6.0.2", "sebastian/object-enumerator": "^5.0.0", "sebastian/recursion-context": "^5.0.1", @@ -1153,7 +1213,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58" }, "funding": [ { @@ -1177,7 +1237,7 @@ "type": "tidelift" } ], - "time": "2025-09-01T17:14:24+00:00" + "time": "2025-09-28T12:04:46+00:00" }, { "name": "psr/http-client", @@ -1391,12 +1451,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "43555f004c573197336c8c6b9ce19963b1a2cc85" + "reference": "f57c49fcd8e15e045bb7530b5902e77ef44330a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/43555f004c573197336c8c6b9ce19963b1a2cc85", - "reference": "43555f004c573197336c8c6b9ce19963b1a2cc85", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/f57c49fcd8e15e045bb7530b5902e77ef44330a8", + "reference": "f57c49fcd8e15e045bb7530b5902e77ef44330a8", "shasum": "" }, "require": { @@ -1438,9 +1498,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" } ], - "time": "2025-01-01T09:30:05+00:00" + "time": "2025-09-26T08:53:55+00:00" }, { "name": "sebastian/code-unit", @@ -1561,12 +1633,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "15e9d195d74d6ac096e41fd71b1129826bdedfd8" + "reference": "9af21bcdf5f29c1791087559fa38bec2e944689e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/15e9d195d74d6ac096e41fd71b1129826bdedfd8", - "reference": "15e9d195d74d6ac096e41fd71b1129826bdedfd8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/9af21bcdf5f29c1791087559fa38bec2e944689e", + "reference": "9af21bcdf5f29c1791087559fa38bec2e944689e", "shasum": "" }, "require": { @@ -1628,9 +1700,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2025-01-06T09:41:38+00:00" + "time": "2025-09-26T09:08:23+00:00" }, { "name": "sebastian/complexity", @@ -1638,12 +1722,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "d7aae9bc46aa256c13b85ef0fb83b98663af2624" + "reference": "72cbad467aed5fc740e4e4c00218f4f4a6ad4297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/d7aae9bc46aa256c13b85ef0fb83b98663af2624", - "reference": "d7aae9bc46aa256c13b85ef0fb83b98663af2624", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/72cbad467aed5fc740e4e4c00218f4f4a6ad4297", + "reference": "72cbad467aed5fc740e4e4c00218f4f4a6ad4297", "shasum": "" }, "require": { @@ -1686,9 +1770,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity", + "type": "tidelift" } ], - "time": "2025-01-01T09:32:52+00:00" + "time": "2025-09-26T09:25:14+00:00" }, { "name": "sebastian/diff", @@ -1696,12 +1792,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "5dd4ecb3f4313473be54fa891baa375ce5e36995" + "reference": "74776e712e4b0c27d7e421b88af13875adb5999b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/5dd4ecb3f4313473be54fa891baa375ce5e36995", - "reference": "5dd4ecb3f4313473be54fa891baa375ce5e36995", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74776e712e4b0c27d7e421b88af13875adb5999b", + "reference": "74776e712e4b0c27d7e421b88af13875adb5999b", "shasum": "" }, "require": { @@ -1753,9 +1849,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" } ], - "time": "2025-01-01T09:33:46+00:00" + "time": "2025-09-26T09:34:04+00:00" }, { "name": "sebastian/environment", @@ -1763,12 +1871,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "e596c27bcbafc7cb018c3a146777ed1d1bd95e71" + "reference": "dd79e32fa7fb850456bbea2e8b984b0768dbce7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/e596c27bcbafc7cb018c3a146777ed1d1bd95e71", - "reference": "e596c27bcbafc7cb018c3a146777ed1d1bd95e71", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dd79e32fa7fb850456bbea2e8b984b0768dbce7a", + "reference": "dd79e32fa7fb850456bbea2e8b984b0768dbce7a", "shasum": "" }, "require": { @@ -1817,9 +1925,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2025-01-01T09:34:17+00:00" + "time": "2025-09-26T09:48:52+00:00" }, { "name": "sebastian/exporter", @@ -1827,12 +1947,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "29b714474c4beaf8c0abc9ea574fae0c3189fa64" + "reference": "674f8e4778fa027ec7b098e09ec6637b723bfbc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/29b714474c4beaf8c0abc9ea574fae0c3189fa64", - "reference": "29b714474c4beaf8c0abc9ea574fae0c3189fa64", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/674f8e4778fa027ec7b098e09ec6637b723bfbc2", + "reference": "674f8e4778fa027ec7b098e09ec6637b723bfbc2", "shasum": "" }, "require": { @@ -1895,9 +2015,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2025-01-01T09:34:58+00:00" + "time": "2025-09-26T11:20:41+00:00" }, { "name": "sebastian/global-state", @@ -1905,12 +2037,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0d3666f55321ef07ba86b187998e160ad8801735" + "reference": "71ab95cd8df46b8413ae5a6d82ccfde4b607c743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0d3666f55321ef07ba86b187998e160ad8801735", - "reference": "0d3666f55321ef07ba86b187998e160ad8801735", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/71ab95cd8df46b8413ae5a6d82ccfde4b607c743", + "reference": "71ab95cd8df46b8413ae5a6d82ccfde4b607c743", "shasum": "" }, "require": { @@ -1957,9 +2089,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2025-01-01T09:35:35+00:00" + "time": "2025-09-26T11:27:56+00:00" }, { "name": "sebastian/lines-of-code", @@ -1967,12 +2111,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "423a753a919376ef7de1b6d57d4e25622faf7a64" + "reference": "f3a9f1083457e342c2f9a0b577c511d9c20be488" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/423a753a919376ef7de1b6d57d4e25622faf7a64", - "reference": "423a753a919376ef7de1b6d57d4e25622faf7a64", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/f3a9f1083457e342c2f9a0b577c511d9c20be488", + "reference": "f3a9f1083457e342c2f9a0b577c511d9c20be488", "shasum": "" }, "require": { @@ -2015,9 +2159,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", + "type": "tidelift" } ], - "time": "2025-01-01T09:36:14+00:00" + "time": "2025-09-26T11:34:22+00:00" }, { "name": "sebastian/object-enumerator", @@ -2025,12 +2181,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "d8bd7ec3598ee22d95317e91ef01bf6b445ffb08" + "reference": "ded04261fddbfb6755b7176685fd7975b874a128" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d8bd7ec3598ee22d95317e91ef01bf6b445ffb08", - "reference": "d8bd7ec3598ee22d95317e91ef01bf6b445ffb08", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ded04261fddbfb6755b7176685fd7975b874a128", + "reference": "ded04261fddbfb6755b7176685fd7975b874a128", "shasum": "" }, "require": { @@ -2073,9 +2229,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator", + "type": "tidelift" } ], - "time": "2025-01-01T09:37:17+00:00" + "time": "2025-09-26T11:40:22+00:00" }, { "name": "sebastian/object-reflector", @@ -2083,12 +2251,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "3049b23e8859861c3d1c9d640f4a69e16f48d628" + "reference": "e16b906e486daae949005a62576318be23e31670" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/3049b23e8859861c3d1c9d640f4a69e16f48d628", - "reference": "3049b23e8859861c3d1c9d640f4a69e16f48d628", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/e16b906e486daae949005a62576318be23e31670", + "reference": "e16b906e486daae949005a62576318be23e31670", "shasum": "" }, "require": { @@ -2129,9 +2297,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector", + "type": "tidelift" } ], - "time": "2025-01-01T09:38:02+00:00" + "time": "2025-09-26T11:45:14+00:00" }, { "name": "sebastian/recursion-context", @@ -2139,12 +2319,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" + "reference": "2b64fcfd962e68d303f86608aca2cf882adbca74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", - "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2b64fcfd962e68d303f86608aca2cf882adbca74", + "reference": "2b64fcfd962e68d303f86608aca2cf882adbca74", "shasum": "" }, "require": { @@ -2187,7 +2367,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0" }, "funding": [ { @@ -2207,7 +2387,7 @@ "type": "tidelift" } ], - "time": "2025-08-10T07:50:56+00:00" + "time": "2025-09-26T12:13:15+00:00" }, { "name": "sebastian/type", @@ -2215,12 +2395,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3d153476a10dd4400cfb3c002349a4fdde7f51a8" + "reference": "68153740a6f11fc82a96e260ef47041967ee1c58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3d153476a10dd4400cfb3c002349a4fdde7f51a8", - "reference": "3d153476a10dd4400cfb3c002349a4fdde7f51a8", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/68153740a6f11fc82a96e260ef47041967ee1c58", + "reference": "68153740a6f11fc82a96e260ef47041967ee1c58", "shasum": "" }, "require": { @@ -2262,9 +2442,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2025-01-01T09:44:48+00:00" + "time": "2025-09-26T12:18:14+00:00" }, { "name": "sebastian/version", @@ -2272,12 +2464,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c5fabb0aad24a981c59b16921ba86e36f6d2b4eb" + "reference": "c8104a729707d949f2132fad0a41c42b7cac080f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c5fabb0aad24a981c59b16921ba86e36f6d2b4eb", - "reference": "c5fabb0aad24a981c59b16921ba86e36f6d2b4eb", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c8104a729707d949f2132fad0a41c42b7cac080f", + "reference": "c8104a729707d949f2132fad0a41c42b7cac080f", "shasum": "" }, "require": { @@ -2316,9 +2508,21 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/version", + "type": "tidelift" } ], - "time": "2025-01-01T09:45:24+00:00" + "time": "2025-09-26T12:27:17+00:00" }, { "name": "smalot/pdfparser", @@ -2326,12 +2530,12 @@ "source": { "type": "git", "url": "https://github.com/smalot/pdfparser.git", - "reference": "98d31ba34ef5b5a98897ef4b6c3925d502ea53b1" + "reference": "370b7e983fafecb787a9bcfd73baab8038212ad1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smalot/pdfparser/zipball/98d31ba34ef5b5a98897ef4b6c3925d502ea53b1", - "reference": "98d31ba34ef5b5a98897ef4b6c3925d502ea53b1", + "url": "https://api.github.com/repos/smalot/pdfparser/zipball/370b7e983fafecb787a9bcfd73baab8038212ad1", + "reference": "370b7e983fafecb787a9bcfd73baab8038212ad1", "shasum": "" }, "require": { @@ -2368,9 +2572,9 @@ ], "support": { "issues": "https://github.com/smalot/pdfparser/issues", - "source": "https://github.com/smalot/pdfparser/tree/v2.12.1" + "source": "https://github.com/smalot/pdfparser/tree/master" }, - "time": "2025-07-31T06:19:56+00:00" + "time": "2025-09-04T08:49:09+00:00" }, { "name": "symfony/deprecation-contracts", diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 36a63e16a7..4108836a11 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/composer.lock @@ -2311,16 +2311,16 @@ }, { "name": "symfony/console", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", - "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "url": "https://api.github.com/repos/symfony/console/zipball/492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", + "reference": "492de6dfd93910d7d7a729c5a04ddcd2b9e99c4f", "shasum": "" }, "require": { @@ -2385,7 +2385,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.25" + "source": "https://github.com/symfony/console/tree/v6.4.26" }, "funding": [ { @@ -2405,7 +2405,7 @@ "type": "tidelift" } ], - "time": "2025-08-22T10:21:53+00:00" + "time": "2025-09-26T12:13:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2964,16 +2964,16 @@ }, { "name": "symfony/string", - "version": "v6.4.25", + "version": "v6.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", - "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", "shasum": "" }, "require": { @@ -2987,7 +2987,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -3030,7 +3029,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.25" + "source": "https://github.com/symfony/string/tree/v6.4.26" }, "funding": [ { @@ -3050,7 +3049,7 @@ "type": "tidelift" } ], - "time": "2025-08-22T12:33:20+00:00" + "time": "2025-09-11T14:32:46+00:00" }, { "name": "vimeo/psalm", diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index c4fcaaa0dc..c37bc7941c 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/composer.lock @@ -9,16 +9,16 @@ "packages-dev": [ { "name": "nextcloud/ocp", - "version": "v31.0.8", + "version": "v32.0.0", "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "abd32429d794ede1d92b7b0a88a1070371c907b5" + "reference": "f25b267f759f10e5aad18ed15f14b9881df5652d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/abd32429d794ede1d92b7b0a88a1070371c907b5", - "reference": "abd32429d794ede1d92b7b0a88a1070371c907b5", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/f25b267f759f10e5aad18ed15f14b9881df5652d", + "reference": "f25b267f759f10e5aad18ed15f14b9881df5652d", "shasum": "" }, "require": { @@ -31,7 +31,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-stable31": "31.0.0-dev" + "dev-stable32": "32.0.0-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -51,9 +51,9 @@ "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API", "support": { "issues": "https://github.com/nextcloud-deps/ocp/issues", - "source": "https://github.com/nextcloud-deps/ocp/tree/v31.0.8" + "source": "https://github.com/nextcloud-deps/ocp/tree/v32.0.0" }, - "time": "2025-07-31T00:57:37+00:00" + "time": "2025-09-16T00:45:44+00:00" }, { "name": "nextcloud/rector", @@ -122,16 +122,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.28", + "version": "2.1.29", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "578fa296a166605d97b94091f724f1257185d278" + "url": "https://github.com/phpstan/phpstan-phar-composer-source.git", + "reference": "git" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/578fa296a166605d97b94091f724f1257185d278", - "reference": "578fa296a166605d97b94091f724f1257185d278", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d618573eed4a1b6b75e37b2e0b65ac65c885d88e", + "reference": "d618573eed4a1b6b75e37b2e0b65ac65c885d88e", "shasum": "" }, "require": { @@ -176,7 +176,7 @@ "type": "github" } ], - "time": "2025-09-19T08:58:49+00:00" + "time": "2025-09-25T06:58:18+00:00" }, { "name": "psr/clock", From d4016af79fd88bd71c3c294d14b7c35d97b50e32 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:09:30 -0300 Subject: [PATCH 0326/5910] fix: error at CI with PHP 8.3 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/behat-mariadb.yml | 2 ++ .github/workflows/behat-mysql.yml | 2 ++ .github/workflows/behat-pgsql.yml | 2 ++ .github/workflows/behat-sqlite.yml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index ccf121c989..495ffbb14f 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -109,6 +109,8 @@ jobs: extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql coverage: none ini-file: development + # Temporary workaround for missing pcntl_* in PHP 8.3 + ini-values: disable_functions= env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index 699a167c45..37f1aa2d22 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -114,6 +114,8 @@ jobs: extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development + # Temporary workaround for missing pcntl_* in PHP 8.3 + ini-values: disable_functions= env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index ff9b307de2..61b53d3557 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -113,6 +113,8 @@ jobs: extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql coverage: none ini-file: development + # Temporary workaround for missing pcntl_* in PHP 8.3 + ini-values: disable_functions= env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index f7c61d5b76..16c7237017 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -104,6 +104,8 @@ jobs: extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development + # Temporary workaround for missing pcntl_* in PHP 8.3 + ini-values: disable_functions= env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 4732cf76e6672bcb56d4cac5f39cde146ea8a304 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:42:14 -0300 Subject: [PATCH 0327/5910] fix: install guests from repository Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/behat-mariadb.yml | 1 + .github/workflows/behat-mysql.yml | 1 + .github/workflows/behat-pgsql.yml | 1 + .github/workflows/behat-sqlite.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index 495ffbb14f..5719c30e83 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -151,6 +151,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity + git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index 37f1aa2d22..dc3d944b71 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -164,6 +164,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity + git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index 61b53d3557..a1ce0a9657 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -158,6 +158,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity + git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index 16c7237017..d81153ca14 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -149,6 +149,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity + git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog From 1b84107e0ec68b70bdce2d90e5be7df7f3fdc0a9 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:49:42 -0300 Subject: [PATCH 0328/5910] fix: guests app uses "main" branch instead of "master" for the latest Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/behat-mariadb.yml | 7 ++++++- .github/workflows/behat-mysql.yml | 7 ++++++- .github/workflows/behat-pgsql.yml | 7 ++++++- .github/workflows/behat-sqlite.yml | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index 5719c30e83..0976063251 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -151,7 +151,12 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests + # guests app uses "main" branch instead of "master" for the latest + branch="${{ matrix.server-versions }}" + if [ "$branch" = "master" ]; then + branch="main" + fi + git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index dc3d944b71..ea9e7be016 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -164,7 +164,12 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests + # guests app uses "main" branch instead of "master" for the latest + branch="${{ matrix.server-versions }}" + if [ "$branch" = "master" ]; then + branch="main" + fi + git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index a1ce0a9657..c06bd04982 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -158,7 +158,12 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests + # guests app uses "main" branch instead of "master" for the latest + branch="${{ matrix.server-versions }}" + if [ "$branch" = "master" ]; then + branch="main" + fi + git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index d81153ca14..5ed28014c3 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -149,7 +149,12 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/guests apps/guests + # guests app uses "main" branch instead of "master" for the latest + branch="${{ matrix.server-versions }}" + if [ "$branch" = "master" ]; then + branch="main" + fi + git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog From 359bc52d60513404ee4eab51117cab772fd199c6 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 14:51:28 -0300 Subject: [PATCH 0329/5910] fix: rollback previous commit Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/behat-mariadb.yml | 7 +------ .github/workflows/behat-mysql.yml | 7 +------ .github/workflows/behat-pgsql.yml | 7 +------ .github/workflows/behat-sqlite.yml | 7 +------ 4 files changed, 4 insertions(+), 24 deletions(-) diff --git a/.github/workflows/behat-mariadb.yml b/.github/workflows/behat-mariadb.yml index 0976063251..932a993f3d 100644 --- a/.github/workflows/behat-mariadb.yml +++ b/.github/workflows/behat-mariadb.yml @@ -151,12 +151,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - # guests app uses "main" branch instead of "master" for the latest - branch="${{ matrix.server-versions }}" - if [ "$branch" = "master" ]; then - branch="main" - fi - git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests + git clone --depth 1 -b main https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-mysql.yml b/.github/workflows/behat-mysql.yml index ea9e7be016..42d72f5f69 100644 --- a/.github/workflows/behat-mysql.yml +++ b/.github/workflows/behat-mysql.yml @@ -164,12 +164,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - # guests app uses "main" branch instead of "master" for the latest - branch="${{ matrix.server-versions }}" - if [ "$branch" = "master" ]; then - branch="main" - fi - git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests + git clone --depth 1 -b main https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-pgsql.yml b/.github/workflows/behat-pgsql.yml index c06bd04982..a4b4f63697 100644 --- a/.github/workflows/behat-pgsql.yml +++ b/.github/workflows/behat-pgsql.yml @@ -158,12 +158,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - # guests app uses "main" branch instead of "master" for the latest - branch="${{ matrix.server-versions }}" - if [ "$branch" = "master" ]; then - branch="main" - fi - git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests + git clone --depth 1 -b main https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog diff --git a/.github/workflows/behat-sqlite.yml b/.github/workflows/behat-sqlite.yml index 5ed28014c3..d4833d6932 100644 --- a/.github/workflows/behat-sqlite.yml +++ b/.github/workflows/behat-sqlite.yml @@ -149,12 +149,7 @@ jobs: ./occ app:enable --force notifications git clone --depth 1 -b ${{ matrix.server-versions }} https://github.com/nextcloud/activity apps/activity ./occ app:enable --force activity - # guests app uses "main" branch instead of "master" for the latest - branch="${{ matrix.server-versions }}" - if [ "$branch" = "master" ]; then - branch="main" - fi - git clone --depth 1 -b "$branch" https://github.com/nextcloud/guests apps/guests + git clone --depth 1 -b main https://github.com/nextcloud/guests apps/guests ./occ app:enable --force guests ./occ config:system:set mail_smtpport --value 1025 --type integer ./occ config:system:set mail_smtphost --value mailhog From f61eba93eac137ef414548874e971948aede0268 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:59:24 -0300 Subject: [PATCH 0330/5910] chore: update workflows Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .github/workflows/appstore-build-publish.yml | 8 ++++---- .github/workflows/phpunit-sqlite.yml | 2 +- .github/workflows/psalm.yml | 12 ++++++++++-- Makefile | 13 +++++++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml index 188bfb66b2..ac76f56472 100644 --- a/.github/workflows/appstore-build-publish.yml +++ b/.github/workflows/appstore-build-publish.yml @@ -43,7 +43,7 @@ jobs: - name: Get app version number id: app-version - uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master + uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # v1.0.0 with: filename: ${{ env.APP_NAME }}/appinfo/info.xml expression: "//info//version/text()" @@ -54,7 +54,7 @@ jobs: - name: Get appinfo data id: appinfo - uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master + uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # v1.0.0 with: filename: ${{ env.APP_NAME }}/appinfo/info.xml expression: "//info//dependencies//nextcloud/@min-version" @@ -178,7 +178,7 @@ jobs: tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }} - name: Attach tarball to github release - uses: svenstaro/upload-release-action@81c65b7cd4de9b2570615ce3aad67a41de5b1a13 # v2 + uses: svenstaro/upload-release-action@81c65b7cd4de9b2570615ce3aad67a41de5b1a13 # v2.11.2 id: attach_to_release with: repo_token: ${{ secrets.GITHUB_TOKEN }} @@ -188,7 +188,7 @@ jobs: overwrite: true - name: Upload app to Nextcloud appstore - uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1 + uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1.0.3 with: app_name: ${{ env.APP_NAME }} appstore_token: ${{ secrets.APPSTORE_TOKEN }} diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml index 5ed27c87b6..b009929ad0 100644 --- a/.github/workflows/phpunit-sqlite.yml +++ b/.github/workflows/phpunit-sqlite.yml @@ -40,7 +40,7 @@ jobs: pull-requests: read outputs: - src: ${{ steps.changes.outputs.src }} + src: ${{ steps.changes.outputs.src}} steps: - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index 5f17f6216c..3059026e02 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -48,7 +48,15 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies - run: composer i + run: | + composer remove nextcloud/ocp --dev --no-scripts + composer i + + - name: Check for vulnerable PHP dependencies + run: composer require --dev roave/security-advisories:dev-latest + + - name: Install nextcloud/ocp + run: composer require --dev nextcloud/ocp:dev-${{ steps.versions.outputs.branches-max }} --ignore-platform-reqs --with-dependencies - name: Run coding standards check - run: composer run psalm -- --output-format=github + run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github diff --git a/Makefile b/Makefile index 1abaece75b..e1d56fa044 100644 --- a/Makefile +++ b/Makefile @@ -82,6 +82,19 @@ clean-dev: test: composer $(CURDIR)/vendor/bin/phpunit -c phpunit.xml +.PHONY: update-workflows +update-workflows: + @echo "Updating GitHub workflows from the Nextcloud template repository..." + @if [ ! -d ./.github/workflows/ ]; then \ + echo "Error: .github/workflows does not exist"; \ + exit 1; \ + fi + @temp=$(mktemp -d); \ + git clone --depth=1 https://github.com/nextcloud/.github.git "$temp"; \ + rsync -vr --existing --include='*/' --include='*.yml' --exclude='*' "$temp/workflow-templates/" ./.github/workflows/; \ + rm -rf "$temp"; \ + echo "Workflows updated successfully." + updateocp: php -r 'if (shell_exec("diff -qr ../../lib/public/ vendor/nextcloud/ocp/OCP/")) {\exec("rm -rf vendor/nextcloud/ocp/OCP/");\exec("cp -r ../../lib/public vendor/nextcloud/ocp/OCP/");}' From 881e237a29e40ce3039d9584faf80c64c416e01c Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Wed, 1 Oct 2025 02:34:00 +0000 Subject: [PATCH 0331/5910] fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/nb.js | 1 + l10n/nb.json | 1 + 2 files changed, 2 insertions(+) diff --git a/l10n/nb.js b/l10n/nb.js index 297b379fd5..1a0fcc8c72 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -258,6 +258,7 @@ OC.L10N.register( "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" massehandling utført", "\"{displayName}\" action failed" : "\"{displayName}\"-handling feilet", "(selected)" : "(valgt)", + "_{count} selected_::_{count} selected_" : ["{count} valgt","{count} valgt"], "Welcome to LibreSign" : "Velkommen til LibreSign", "Finish the setup" : "Fullfør oppsettet", "Owner of certificate" : "Eier av sertifikat", diff --git a/l10n/nb.json b/l10n/nb.json index b603c5d9f1..cb8948b3e1 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -256,6 +256,7 @@ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" massehandling utført", "\"{displayName}\" action failed" : "\"{displayName}\"-handling feilet", "(selected)" : "(valgt)", + "_{count} selected_::_{count} selected_" : ["{count} valgt","{count} valgt"], "Welcome to LibreSign" : "Velkommen til LibreSign", "Finish the setup" : "Fullfør oppsettet", "Owner of certificate" : "Eier av sertifikat", From e407305967de454732b68e3db303777cdcba2266 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:02:21 -0300 Subject: [PATCH 0332/5910] fix: isolate all dependencies prevent conflicts with other apps Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- composer.json | 17 +++++++------ lib/Command/Developer/SignSetup.php | 4 ++-- lib/Db/PagerFantaQueryAdapter.php | 4 ++-- lib/Handler/FooterHandler.php | 24 +++++++++---------- lib/Handler/SignEngine/JSignPdfHandler.php | 4 ++-- lib/Handler/SignEngine/Pkcs12Handler.php | 2 +- lib/Helper/Pagination.php | 2 +- .../IdentifyMethod/AbstractIdentifyMethod.php | 2 +- .../SignatureMethod/EmailToken.php | 2 +- lib/Service/Install/SignSetupService.php | 4 ++-- lib/Service/PdfParserService.php | 5 ++-- lib/Service/SignatureTextService.php | 6 ++--- lib/Service/TFile.php | 2 +- lib/Vendor/.gitkeep | 0 scoper.inc.php | 8 +++++-- 15 files changed, 47 insertions(+), 39 deletions(-) create mode 100644 lib/Vendor/.gitkeep diff --git a/composer.json b/composer.json index 5d6fdf702d..062d0aaba8 100644 --- a/composer.json +++ b/composer.json @@ -36,13 +36,16 @@ "openapi": "generate-spec --verbose && (npm run typescript:generate || echo 'Please manually regenerate the typescript OpenAPI models')", "psalm": "psalm --no-cache --threads=$(nproc)", "psalm:update-baseline": "psalm --threads=$(nproc) --update-baseline --set-baseline=tests/psalm-baseline.xml", + "pre-autoload-dump": [ + "mkdir -p lib/Vendor" + ], "post-install-cmd": [ "@composer bin all install --ansi", - "php -d error_reporting=E_ALL\\&~E_DEPRECATED\\&~E_USER_DEPRECATED vendor-bin/php-scoper/vendor/humbug/php-scoper/bin/php-scoper add-prefix --force", + "php -d error_reporting=E_ALL\\&~E_DEPRECATED\\&~E_USER_DEPRECATED vendor-bin/php-scoper/vendor/humbug/php-scoper/bin/php-scoper add-prefix --force && > lib/Vendor/.gitkeep", "composer dump-autoload -o" ], "post-update-cmd": [ - "php -d error_reporting=E_ALL\\&~E_DEPRECATED\\&~E_USER_DEPRECATED vendor-bin/php-scoper/vendor/humbug/php-scoper/bin/php-scoper add-prefix --force", + "php -d error_reporting=E_ALL\\&~E_DEPRECATED\\&~E_USER_DEPRECATED vendor-bin/php-scoper/vendor/humbug/php-scoper/bin/php-scoper add-prefix --force && > lib/Vendor/.gitkeep", "composer dump-autoload" ], "test:unit": "vendor/bin/phpunit -c tests/php/phpunit.xml --no-coverage --colors=always --fail-on-warning --fail-on-risky --display-deprecations --display-phpunit-deprecations", @@ -56,11 +59,11 @@ }, "autoload": { "psr-4": { - "OCA\\Libresign\\": "lib/", - "OCA\\Libresign\\Vendor\\mikehaertl\\pdftk\\": "lib/Vendor/php-pdftk/src/", - "OCA\\Libresign\\Vendor\\mikehaertl\\shellcommand\\": "lib/Vendor/php-shellcommand/src/", - "OCA\\Libresign\\Vendor\\mikehaertl\\tmp\\": "lib/Vendor/php-tmpfile/src/" - } + "OCA\\Libresign\\": "lib/" + }, + "classmap": [ + "lib/Vendor/" + ] }, "autoload-dev": { "psr-4": { diff --git a/lib/Command/Developer/SignSetup.php b/lib/Command/Developer/SignSetup.php index 4d0798597a..f8a7e38179 100644 --- a/lib/Command/Developer/SignSetup.php +++ b/lib/Command/Developer/SignSetup.php @@ -12,9 +12,9 @@ use OC\Core\Command\Base; use OCA\Libresign\Service\Install\InstallService; use OCA\Libresign\Service\Install\SignSetupService; +use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; +use OCA\Libresign\Vendor\phpseclib\File\X509; use OCP\IConfig; -use phpseclib\Crypt\RSA; -use phpseclib\File\X509; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; diff --git a/lib/Db/PagerFantaQueryAdapter.php b/lib/Db/PagerFantaQueryAdapter.php index bbe18a1b45..274b30752c 100644 --- a/lib/Db/PagerFantaQueryAdapter.php +++ b/lib/Db/PagerFantaQueryAdapter.php @@ -9,9 +9,9 @@ namespace OCA\Libresign\Db; use Doctrine\DBAL\Query\QueryBuilder; +use OCA\Libresign\Vendor\Pagerfanta\Adapter\AdapterInterface; +use OCA\Libresign\Vendor\Pagerfanta\Exception\InvalidArgumentException; use OCP\DB\QueryBuilder\IQueryBuilder; -use Pagerfanta\Adapter\AdapterInterface; -use Pagerfanta\Exception\InvalidArgumentException; /** * Adapter which calculates pagination from a Doctrine DBAL QueryBuilder. diff --git a/lib/Handler/FooterHandler.php b/lib/Handler/FooterHandler.php index 69af024ea1..96adbfbb02 100644 --- a/lib/Handler/FooterHandler.php +++ b/lib/Handler/FooterHandler.php @@ -8,28 +8,28 @@ namespace OCA\Libresign\Handler; -use BaconQrCode\Encoder\Encoder; -use Endroid\QrCode\Bacon\ErrorCorrectionLevelConverter; -use Endroid\QrCode\Color\Color; -use Endroid\QrCode\Encoding\Encoding; -use Endroid\QrCode\ErrorCorrectionLevel; -use Endroid\QrCode\QrCode; -use Endroid\QrCode\RoundBlockSizeMode; -use Endroid\QrCode\Writer\PngWriter; -use Mpdf\Mpdf; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Db\File as FileEntity; use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Service\PdfParserService; +use OCA\Libresign\Vendor\BaconQrCode\Encoder\Encoder; +use OCA\Libresign\Vendor\Endroid\QrCode\Bacon\ErrorCorrectionLevelConverter; +use OCA\Libresign\Vendor\Endroid\QrCode\Color\Color; +use OCA\Libresign\Vendor\Endroid\QrCode\Encoding\Encoding; +use OCA\Libresign\Vendor\Endroid\QrCode\ErrorCorrectionLevel; +use OCA\Libresign\Vendor\Endroid\QrCode\QrCode; +use OCA\Libresign\Vendor\Endroid\QrCode\RoundBlockSizeMode; +use OCA\Libresign\Vendor\Endroid\QrCode\Writer\PngWriter; +use OCA\Libresign\Vendor\Mpdf\Mpdf; +use OCA\Libresign\Vendor\Twig\Environment; +use OCA\Libresign\Vendor\Twig\Error\SyntaxError; +use OCA\Libresign\Vendor\Twig\Loader\FilesystemLoader; use OCP\Files\File; use OCP\IAppConfig; use OCP\IL10N; use OCP\ITempManager; use OCP\IURLGenerator; use OCP\L10N\IFactory; -use Twig\Environment; -use Twig\Error\SyntaxError; -use Twig\Loader\FilesystemLoader; class FooterHandler { private QrCode $qrCode; diff --git a/lib/Handler/SignEngine/JSignPdfHandler.php b/lib/Handler/SignEngine/JSignPdfHandler.php index 0f5a595fc1..5cdf7fc820 100644 --- a/lib/Handler/SignEngine/JSignPdfHandler.php +++ b/lib/Handler/SignEngine/JSignPdfHandler.php @@ -10,8 +10,6 @@ use Imagick; use ImagickPixel; -use Jeidison\JSignPDF\JSignPDF; -use Jeidison\JSignPDF\Sign\JSignParam; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Handler\CertificateEngine\CertificateEngineFactory; @@ -20,6 +18,8 @@ use OCA\Libresign\Service\SignatureBackgroundService; use OCA\Libresign\Service\SignatureTextService; use OCA\Libresign\Service\SignerElementsService; +use OCA\Libresign\Vendor\Jeidison\JSignPDF\JSignPDF; +use OCA\Libresign\Vendor\Jeidison\JSignPDF\Sign\JSignParam; use OCP\Files\File; use OCP\IAppConfig; use OCP\ITempManager; diff --git a/lib/Handler/SignEngine/Pkcs12Handler.php b/lib/Handler/SignEngine/Pkcs12Handler.php index c3fce4942d..a07913a905 100644 --- a/lib/Handler/SignEngine/Pkcs12Handler.php +++ b/lib/Handler/SignEngine/Pkcs12Handler.php @@ -15,11 +15,11 @@ use OCA\Libresign\Handler\CertificateEngine\OrderCertificatesTrait; use OCA\Libresign\Handler\FooterHandler; use OCA\Libresign\Service\FolderService; +use OCA\Libresign\Vendor\phpseclib3\File\ASN1; use OCP\Files\File; use OCP\IAppConfig; use OCP\IL10N; use OCP\ITempManager; -use phpseclib3\File\ASN1; use Psr\Log\LoggerInterface; class Pkcs12Handler extends SignEngineHandler { diff --git a/lib/Helper/Pagination.php b/lib/Helper/Pagination.php index 2a3952c46e..146ea1fe4e 100644 --- a/lib/Helper/Pagination.php +++ b/lib/Helper/Pagination.php @@ -9,9 +9,9 @@ namespace OCA\Libresign\Helper; use OCA\Libresign\Db\PagerFantaQueryAdapter; +use OCA\Libresign\Vendor\Pagerfanta\Pagerfanta; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IURLGenerator; -use Pagerfanta\Pagerfanta; class Pagination extends Pagerfanta { private string $routeName; diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index 6285139e04..1718776ade 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -19,8 +19,8 @@ use OCA\Libresign\Helper\JSActions; use OCA\Libresign\Service\IdentifyMethod\SignatureMethod\AbstractSignatureMethod; use OCA\Libresign\Service\SessionService; +use OCA\Libresign\Vendor\Wobeto\EmailBlur\Blur; use OCP\IUser; -use Wobeto\EmailBlur\Blur; abstract class AbstractIdentifyMethod implements IIdentifyMethod { protected IdentifyMethod $entity; diff --git a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php index c7ad992250..2aa91ec597 100644 --- a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php +++ b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php @@ -11,7 +11,7 @@ use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Helper\JSActions; use OCA\Libresign\Service\IdentifyMethod\IdentifyService; -use Wobeto\EmailBlur\Blur; +use OCA\Libresign\Vendor\Wobeto\EmailBlur\Blur; class EmailToken extends AbstractSignatureMethod implements IToken { public function __construct( diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index 722352dba7..e8dc9eceb1 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -17,6 +17,8 @@ use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Exception\SignatureDataNotFoundException; use OCA\Libresign\Handler\CertificateEngine\CertificateHelper; +use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; +use OCA\Libresign\Vendor\phpseclib\File\X509; use OCP\App\IAppManager; use OCP\Files\AppData\IAppDataFactory; use OCP\Files\IAppData; @@ -25,8 +27,6 @@ use OCP\IAppConfig; use OCP\IConfig; use OCP\ITempManager; -use phpseclib\Crypt\RSA; -use phpseclib\File\X509; class SignSetupService { private array $exclude = [ diff --git a/lib/Service/PdfParserService.php b/lib/Service/PdfParserService.php index 6c01485715..d9a581da9c 100644 --- a/lib/Service/PdfParserService.php +++ b/lib/Service/PdfParserService.php @@ -9,10 +9,11 @@ namespace OCA\Libresign\Service; use OCA\Libresign\Exception\LibresignException; +use OCA\Libresign\Vendor\Smalot\PdfParser\Document; +use OCA\Libresign\Vendor\Smalot\PdfParser\Parser; use OCP\Files\File; use OCP\ITempManager; use Psr\Log\LoggerInterface; -use Smalot\PdfParser\Document; class PdfParserService { private string $content = ''; @@ -52,7 +53,7 @@ private function getDocument(): Document { if (!$this->document) { $content = $this->getContent(); try { - $parser = new \Smalot\PdfParser\Parser(); + $parser = new Parser(); $this->document = $parser->parseContent($content); return $this->document; } catch (\Throwable $th) { diff --git a/lib/Service/SignatureTextService.php b/lib/Service/SignatureTextService.php index e918b0309c..7b18511577 100644 --- a/lib/Service/SignatureTextService.php +++ b/lib/Service/SignatureTextService.php @@ -14,6 +14,9 @@ use ImagickPixel; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Exception\LibresignException; +use OCA\Libresign\Vendor\Twig\Environment; +use OCA\Libresign\Vendor\Twig\Error\SyntaxError; +use OCA\Libresign\Vendor\Twig\Loader\FilesystemLoader; use OCP\IAppConfig; use OCP\IDateTimeZone; use OCP\IL10N; @@ -21,9 +24,6 @@ use OCP\IUserSession; use Psr\Log\LoggerInterface; use Sabre\DAV\UUIDUtil; -use Twig\Environment; -use Twig\Error\SyntaxError; -use Twig\Loader\FilesystemLoader; class SignatureTextService { public const TEMPLATE_DEFAULT_FONT_SIZE = 10; diff --git a/lib/Service/TFile.php b/lib/Service/TFile.php index c895956983..e1f7beb085 100644 --- a/lib/Service/TFile.php +++ b/lib/Service/TFile.php @@ -8,9 +8,9 @@ namespace OCA\Libresign\Service; +use OCA\Libresign\Vendor\setasign\Fpdi\PdfParserService\Type\PdfTypeException; use OCP\Files\Node; use OCP\Http\Client\IClientService; -use setasign\Fpdi\PdfParserService\Type\PdfTypeException; trait TFile { /** @var ?string */ diff --git a/lib/Vendor/.gitkeep b/lib/Vendor/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scoper.inc.php b/scoper.inc.php index d4e9ff00fa..dc8eb1c2d9 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -18,8 +18,12 @@ 'finders' => [ Finder::create()->files() ->exclude([ - 'vendor-bin' + 'bamarni', + 'bin', + 'composer', + 'nextcloud', ]) - ->in('vendor/mikehaertl'), + ->notName('autoload.php') + ->in('vendor'), ], ]; From 62041b00236d9a869a15a5b6c8214934698ea8db Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:12:29 -0300 Subject: [PATCH 0333/5910] fix: add license Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- REUSE.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/REUSE.toml b/REUSE.toml index 0671de0800..f23815ba89 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -32,6 +32,7 @@ path = [ "l10n/*.js", "l10n/*.json", "Makefile", + "lib/Vendor/.gitkeep", "openapi-administration.json", "openapi-full.json", "openapi.json", From e3e48d8c9bbe263db07e3228af9c83adde35e7f1 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:41:25 -0300 Subject: [PATCH 0334/5910] fix: namespace Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- tests/php/Unit/Service/Install/SignSetupServiceTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/php/Unit/Service/Install/SignSetupServiceTest.php b/tests/php/Unit/Service/Install/SignSetupServiceTest.php index cf99b14105..4ea0d4cfe3 100644 --- a/tests/php/Unit/Service/Install/SignSetupServiceTest.php +++ b/tests/php/Unit/Service/Install/SignSetupServiceTest.php @@ -13,12 +13,12 @@ use OC\IntegrityCheck\Helpers\FileAccessHelper; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Service\Install\SignSetupService; +use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; use OCP\App\IAppManager; use OCP\Files\AppData\IAppDataFactory; use OCP\IAppConfig; use OCP\IConfig; use OCP\ITempManager; -use phpseclib\Crypt\RSA; use phpseclib\File\X509; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\MockObject\MockObject; From f38574a311a82fdd441ae2b46b9715f93393a42f Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:15:13 -0300 Subject: [PATCH 0335/5910] fix: twig Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/scoper.inc.php b/scoper.inc.php index dc8eb1c2d9..138b2b0275 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -26,4 +26,28 @@ ->notName('autoload.php') ->in('vendor'), ], + 'patchers' => [ + // patchers for twig + static function (string $filePath, string $prefix, string $content): string { + // correct use statements in generated templates + if (preg_match('%twig/src/Node/ModuleNode\\.php$%', $filePath)) { + return str_replace('"use Twig\\', '"use ' . str_replace('\\', '\\\\', $prefix) . '\\\\Twig\\', $content); + } + + // correctly scope function calls to twig_... globals (which will not be globals anymore) in strings + if (strpos($filePath, 'twig/twig') !== false + || preg_match('/\\.php$/', $filePath) + ) { + $content = preg_replace("/([^'\"])(_?twig_[a-z_0-9]+)\\(/", '${1}\\OCA\\Libresign\\Vendor\\\${2}(', $content); + + $content = preg_replace("/'(_?twig_[a-z_0-9]+)([('])/", '\'\\OCA\\Libresign\\vendor\\\${1}${2}', $content); + $content = preg_replace("/\"(_?twig_[a-z_0-9]+)([(\"])/", '"\\\\\\OCA\\\\\\Libresign\\\\\\Vendor\\\\\\\${1}${2}', $content); + + $content = preg_replace("/([^\\\\])(_?twig_[a-z_0-9]+)\(\"/", '${1}\\\\\\OCA\\\\\\Libresign\\\\\\Vendor\\\\\\\${2}("', $content); + $content = preg_replace("/([^\\\\])(_?twig_[a-z_0-9]+)\('/", '${1}\\OCA\\Libresign\\Vendor\\\${2}(\'', $content); + } + + return $content; + }, + ], ]; From 1145e2b65e013686047c3be36099340f16d9cf57 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:15:25 -0300 Subject: [PATCH 0336/5910] chore: remove vendor from autoload classmap Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 062d0aaba8..61136b45b5 100644 --- a/composer.json +++ b/composer.json @@ -63,7 +63,8 @@ }, "classmap": [ "lib/Vendor/" - ] + ], + "exclude-from-classmap": ["/vendor/"] }, "autoload-dev": { "psr-4": { From 43d4691cda1d9aa0155b05d637800eec17cf8908 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:38:48 -0300 Subject: [PATCH 0337/5910] fix: apply cs Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scoper.inc.php b/scoper.inc.php index 138b2b0275..ec1785ed40 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -41,7 +41,7 @@ static function (string $filePath, string $prefix, string $content): string { $content = preg_replace("/([^'\"])(_?twig_[a-z_0-9]+)\\(/", '${1}\\OCA\\Libresign\\Vendor\\\${2}(', $content); $content = preg_replace("/'(_?twig_[a-z_0-9]+)([('])/", '\'\\OCA\\Libresign\\vendor\\\${1}${2}', $content); - $content = preg_replace("/\"(_?twig_[a-z_0-9]+)([(\"])/", '"\\\\\\OCA\\\\\\Libresign\\\\\\Vendor\\\\\\\${1}${2}', $content); + $content = preg_replace('/"(_?twig_[a-z_0-9]+)([("])/', '"\\\\\\OCA\\\\\\Libresign\\\\\\Vendor\\\\\\\${1}${2}', $content); $content = preg_replace("/([^\\\\])(_?twig_[a-z_0-9]+)\(\"/", '${1}\\\\\\OCA\\\\\\Libresign\\\\\\Vendor\\\\\\\${2}("', $content); $content = preg_replace("/([^\\\\])(_?twig_[a-z_0-9]+)\('/", '${1}\\OCA\\Libresign\\Vendor\\\${2}(\'', $content); From a9dc20893231145a776dd9039e334488f65d18c9 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:39:28 -0300 Subject: [PATCH 0338/5910] fix: patchers for mpdf Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scoper.inc.php b/scoper.inc.php index ec1785ed40..9dfc0b3801 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -49,5 +49,26 @@ static function (string $filePath, string $prefix, string $content): string { return $content; }, + // patchers for Mpdf + static function (string $filePath, string $prefix, string $content): string { + if (!str_contains($filePath, 'mpdf/mpdf')) { + return $content; + } + + $file = basename($filePath); + + return match ($file) { + 'Tag.php' => str_replace("'Mpdf\\\\Tag\\\\'", "'$prefix\\\\Mpdf\\\\Tag\\\\'", $content), + 'FpdiTrait.php' => str_replace('use \\setasign\\', "use \\$prefix\\setasign\\", $content), + 'Svg.php' => preg_replace("/$prefix\\\\(]*>)/", '$1', $content), + 'Mpdf.php' => str_replace(["$prefix\\\\r\\\\n", "$prefix\\\\ str_replace("namespace $prefix;", '', $content), + 'LoggerAwareInterface.php', + 'LoggerAwareTrait.php', + 'MpdfPsrLogAwareTrait.php', + 'PsrLogAwareTrait.php' => str_replace("\\$prefix\\Psr\\Log\\LoggerInterface", '\\Psr\\Log\\LoggerInterface', $content), + default => $content, + }; + }, ], ]; From 7728967803836a37fcc7772b4dc29c8d1efc44c6 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:45:20 -0300 Subject: [PATCH 0339/5910] fix: rollback the previous change, psalm need this Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- composer.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 61136b45b5..062d0aaba8 100644 --- a/composer.json +++ b/composer.json @@ -63,8 +63,7 @@ }, "classmap": [ "lib/Vendor/" - ], - "exclude-from-classmap": ["/vendor/"] + ] }, "autoload-dev": { "psr-4": { From f2d5f33a9bd808989e60233966d2bbaad8a558fb Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:46:49 -0300 Subject: [PATCH 0340/5910] fix: unit tests Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- tests/php/Api/Controller/SignFileControllerTest.php | 2 +- tests/php/Unit/Handler/SignEngine/JSignPdfHandlerTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/php/Api/Controller/SignFileControllerTest.php b/tests/php/Api/Controller/SignFileControllerTest.php index 3ce7b8003e..01ed35a2a5 100644 --- a/tests/php/Api/Controller/SignFileControllerTest.php +++ b/tests/php/Api/Controller/SignFileControllerTest.php @@ -10,9 +10,9 @@ use DateTime; use donatj\MockWebServer\Response; -use Jeidison\JSignPDF\JSignPDF; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Tests\Api\ApiTestCase; +use OCA\Libresign\Vendor\Jeidison\JSignPDF\JSignPDF; /** * @group DB diff --git a/tests/php/Unit/Handler/SignEngine/JSignPdfHandlerTest.php b/tests/php/Unit/Handler/SignEngine/JSignPdfHandlerTest.php index 3055ef978c..a5d44fa963 100644 --- a/tests/php/Unit/Handler/SignEngine/JSignPdfHandlerTest.php +++ b/tests/php/Unit/Handler/SignEngine/JSignPdfHandlerTest.php @@ -8,8 +8,6 @@ namespace OCA\Libresign\Tests\Unit\Service; -use Jeidison\JSignPDF\JSignPDF; -use Jeidison\JSignPDF\Sign\JSignParam; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\DataObjects\VisibleElementAssoc; use OCA\Libresign\Db\FileElement; @@ -19,6 +17,8 @@ use OCA\Libresign\Service\SignatureBackgroundService; use OCA\Libresign\Service\SignatureTextService; use OCA\Libresign\Service\SignerElementsService; +use OCA\Libresign\Vendor\Jeidison\JSignPDF\JSignPDF; +use OCA\Libresign\Vendor\Jeidison\JSignPDF\Sign\JSignParam; use OCP\IAppConfig; use OCP\IDateTimeZone; use OCP\IRequest; From d5c0ace3fc749b88d583cc8f9eb71879d9db9638 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:38:16 -0300 Subject: [PATCH 0341/5910] chore: update to phpseclib3 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 53 +++++++++++++----------- tests/psalm-baseline.xml | 26 ------------ 2 files changed, 29 insertions(+), 50 deletions(-) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index e8dc9eceb1..5f58ee02a2 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -17,8 +17,10 @@ use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Exception\SignatureDataNotFoundException; use OCA\Libresign\Handler\CertificateEngine\CertificateHelper; -use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; -use OCA\Libresign\Vendor\phpseclib\File\X509; +use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA\PrivateKey; +use OCA\Libresign\Vendor\phpseclib3\Crypt\PublicKeyLoader; +use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA; +use OCA\Libresign\Vendor\phpseclib3\File\X509; use OCP\App\IAppManager; use OCP\Files\AppData\IAppDataFactory; use OCP\Files\IAppData; @@ -40,7 +42,7 @@ class SignSetupService { private bool $willUseLocalCert = false; private string $distro = ''; private ?X509 $x509 = null; - private ?RSA $rsa = null; + private ?PrivateKey $privateKey = null; private string $instanceId; private IAppData $appData; public function __construct( @@ -74,8 +76,8 @@ public function getArchitectures(): array { return $appInfo['dependencies']['architecture']; } - public function setPrivateKey(RSA $privateKey): void { - $this->rsa = $privateKey; + public function setPrivateKey(PrivateKey $privateKey): void { + $this->privateKey = $privateKey; } public function setCertificate(x509 $x509): void { @@ -86,17 +88,19 @@ public function willUseLocalCert(bool $willUseLocalCert): void { $this->willUseLocalCert = $willUseLocalCert; } - private function getPrivateKey(): RSA { - if (!$this->rsa instanceof RSA) { + private function getPrivateKey(): PrivateKey { + if (!$this->privateKey instanceof PrivateKey) { if (file_exists(__DIR__ . '/../../../build/tools/certificates/local/libresign.key')) { $privateKey = file_get_contents(__DIR__ . '/../../../build/tools/certificates/local/libresign.key'); - $this->rsa = new RSA(); - $this->rsa->loadKey($privateKey); + $this->privateKey = PublicKeyLoader::loadPrivateKey($privateKey); } else { $this->getDevelopCert(); } } - return $this->rsa; + if (!$this->privateKey instanceof PrivateKey) { + throw new LibresignException('Private key not found'); + } + return $this->privateKey; } private function getCertificate(): X509 { @@ -110,6 +114,9 @@ private function getCertificate(): X509 { $this->getDevelopCert(); } } + if (!$this->x509 instanceof x509) { + throw new LibresignException('Certificate not found'); + } return $this->x509; } @@ -381,12 +388,11 @@ private function validateIfIssignedByLibresignAppCertificate(array $expectedHash $x509 = $this->getLibresignAppCertificate(); // Check if the signature of the files is valid - $rsa = new RSA(); - $rsa->loadKey($x509->currentCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']); - $rsa->setSignatureMode(RSA::SIGNATURE_PSS); - $rsa->setMGFHash('sha512'); + $rsa = $x509->getPublicKey(); + $rsa->withPadding(RSA::SIGNATURE_PSS); + $rsa->withMGFHash('sha512'); // See https://tools.ietf.org/html/rfc3447#page-38 - $rsa->setSaltLength(0); + $rsa->withSaltLength(0); $signatureData = $this->getSignatureData(); $signature = base64_decode((string)$signatureData['signature']); @@ -525,16 +531,16 @@ private function isExcluded(string $filename): bool { private function createSignatureData(array $hashes): array { ksort($hashes); - $this->getPrivateKey()->setSignatureMode(RSA::SIGNATURE_PSS); - $this->getPrivateKey()->setMGFHash('sha512'); - // See https://tools.ietf.org/html/rfc3447#page-38 - $this->getPrivateKey()->setSaltLength(0); - $signature = $this->getPrivateKey()->sign(json_encode($hashes)); + $privateKey = $this->getPrivateKey(); + $privateKey->withPadding(RSA::SIGNATURE_PSS); + $privateKey->withMGFHash('sha512'); + $privateKey->withSaltLength(0); + $signature = $privateKey->sign(json_encode($hashes)); return [ 'hashes' => $hashes, 'signature' => base64_encode($signature), - 'certificate' => $this->getCertificate()->saveX509($this->getCertificate()->currentCert), + 'certificate' => $this->getCertificate()->saveX509($this->getCertificate()->getCurrentCert()), ]; } @@ -574,11 +580,10 @@ public function getDevelopCert(): array { openssl_x509_export($x509, $rootCertificate); openssl_pkey_export($privateKey, $privateKeyCert); - $this->rsa = new RSA(); - $this->rsa->loadKey($privateKeyCert); + $this->privateKey = RSA::loadPrivateKey($privateKeyCert); $this->x509 = new X509(); $this->x509->loadX509($rootCertificate); - $this->x509->setPrivateKey($this->rsa); + $this->x509->setPrivateKey($this->privateKey); $rootCertPath = __DIR__ . '/../../../build/tools/certificates/local/'; if (!is_dir($rootCertPath)) { diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml index 3198641746..df6234a947 100644 --- a/tests/psalm-baseline.xml +++ b/tests/psalm-baseline.xml @@ -138,32 +138,6 @@ - - - getCertificate()]]> - getCertificate()->currentCert]]> - getPrivateKey()]]> - getPrivateKey()]]> - getPrivateKey()]]> - getPrivateKey()]]> - currentCert]]> - - - - - - - - - - - - - - - - - From 03863425bf3a69c9f400c80b81f62755657dbb3e Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:06:01 -0300 Subject: [PATCH 0342/5910] fix: cs Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index 5f58ee02a2..ff095262af 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -17,9 +17,9 @@ use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Exception\SignatureDataNotFoundException; use OCA\Libresign\Handler\CertificateEngine\CertificateHelper; -use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA\PrivateKey; use OCA\Libresign\Vendor\phpseclib3\Crypt\PublicKeyLoader; use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA; +use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA\PrivateKey; use OCA\Libresign\Vendor\phpseclib3\File\X509; use OCP\App\IAppManager; use OCP\Files\AppData\IAppDataFactory; From bbd97ecbc2bb5ad257c8478b24b79f8a66e3840d Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:06:14 -0300 Subject: [PATCH 0343/5910] chore: add back the comment Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index ff095262af..c904d791fa 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -534,6 +534,7 @@ private function createSignatureData(array $hashes): array { $privateKey = $this->getPrivateKey(); $privateKey->withPadding(RSA::SIGNATURE_PSS); $privateKey->withMGFHash('sha512'); + // See https://tools.ietf.org/html/rfc3447#page-38 $privateKey->withSaltLength(0); $signature = $privateKey->sign(json_encode($hashes)); From b8267b0042d59c5fc030c345ba02e858292f4207 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:18:32 -0300 Subject: [PATCH 0344/5910] fix: patcher for phpseclib Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scoper.inc.php b/scoper.inc.php index 9dfc0b3801..0c4e69d86c 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -70,5 +70,16 @@ static function (string $filePath, string $prefix, string $content): string { default => $content, }; }, + // patchers for phpseclib + static function (string $filePath, string $prefix, string $content): string { + if (!str_contains($filePath, 'phpseclib/phpseclib') || !str_ends_with($filePath, '.php')) { + return $content; + } + // Use modified prefix just for this patch. + $s_prefix = str_replace( '\\', '\\\\', $prefix ); + $content = str_replace( "'phpseclib3\\\\", "'\\\\" . $s_prefix . '\\\\phpseclib3\\\\', $content ); + $content = str_replace( "'\\\\phpseclib3", "'\\\\" . $s_prefix . '\\\\phpseclib3', $content ); + return $content; + } ], ]; From 19bf3a1e4251cfefd029c58b827ec88ff85bbbc8 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:19:01 -0300 Subject: [PATCH 0345/5910] fix: unit tests Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- tests/php/Unit/Service/Install/SignSetupServiceTest.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/php/Unit/Service/Install/SignSetupServiceTest.php b/tests/php/Unit/Service/Install/SignSetupServiceTest.php index 4ea0d4cfe3..c9f238d682 100644 --- a/tests/php/Unit/Service/Install/SignSetupServiceTest.php +++ b/tests/php/Unit/Service/Install/SignSetupServiceTest.php @@ -106,12 +106,6 @@ private function writeAppSignature(string $architecture, $resource): SignSetupSe ->willReturn(['dependencies' => ['architecture' => [$architecture]]]); $certificate = $signSetupService->getDevelopCert(); - $rsa = new RSA(); - $rsa->loadKey($certificate['privateKeyInstance']); - $rsa->loadKey($certificate['privateKeyCert']); - $x509 = new X509(); - $x509->loadX509($certificate['rootCertificate']); - $x509->setPrivateKey($rsa); $structure = [ 'data' => [ From a5640d82790fe3a0315558fdcf990fa32887bccf Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:20:15 -0300 Subject: [PATCH 0346/5910] chore: remove comment Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 1 - 1 file changed, 1 deletion(-) diff --git a/scoper.inc.php b/scoper.inc.php index 0c4e69d86c..6916939c43 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -75,7 +75,6 @@ static function (string $filePath, string $prefix, string $content): string { if (!str_contains($filePath, 'phpseclib/phpseclib') || !str_ends_with($filePath, '.php')) { return $content; } - // Use modified prefix just for this patch. $s_prefix = str_replace( '\\', '\\\\', $prefix ); $content = str_replace( "'phpseclib3\\\\", "'\\\\" . $s_prefix . '\\\\phpseclib3\\\\', $content ); $content = str_replace( "'\\\\phpseclib3", "'\\\\" . $s_prefix . '\\\\phpseclib3', $content ); From 4daa2f222ea1a071331dd3d0745ba9db12f7f545 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:21:28 -0300 Subject: [PATCH 0347/5910] fix: cs Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- scoper.inc.php | 6 +++--- tests/php/Unit/Service/Install/SignSetupServiceTest.php | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/scoper.inc.php b/scoper.inc.php index 6916939c43..63d11c2c31 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -75,9 +75,9 @@ static function (string $filePath, string $prefix, string $content): string { if (!str_contains($filePath, 'phpseclib/phpseclib') || !str_ends_with($filePath, '.php')) { return $content; } - $s_prefix = str_replace( '\\', '\\\\', $prefix ); - $content = str_replace( "'phpseclib3\\\\", "'\\\\" . $s_prefix . '\\\\phpseclib3\\\\', $content ); - $content = str_replace( "'\\\\phpseclib3", "'\\\\" . $s_prefix . '\\\\phpseclib3', $content ); + $s_prefix = str_replace('\\', '\\\\', $prefix); + $content = str_replace("'phpseclib3\\\\", "'\\\\" . $s_prefix . '\\\\phpseclib3\\\\', $content); + $content = str_replace("'\\\\phpseclib3", "'\\\\" . $s_prefix . '\\\\phpseclib3', $content); return $content; } ], diff --git a/tests/php/Unit/Service/Install/SignSetupServiceTest.php b/tests/php/Unit/Service/Install/SignSetupServiceTest.php index c9f238d682..0d6613a267 100644 --- a/tests/php/Unit/Service/Install/SignSetupServiceTest.php +++ b/tests/php/Unit/Service/Install/SignSetupServiceTest.php @@ -13,13 +13,11 @@ use OC\IntegrityCheck\Helpers\FileAccessHelper; use OCA\Libresign\AppInfo\Application; use OCA\Libresign\Service\Install\SignSetupService; -use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; use OCP\App\IAppManager; use OCP\Files\AppData\IAppDataFactory; use OCP\IAppConfig; use OCP\IConfig; use OCP\ITempManager; -use phpseclib\File\X509; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\MockObject\MockObject; From 106092ff83aa49de3539293fca7e7f5c63753c7f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:27:04 +0000 Subject: [PATCH 0348/5910] chore(deps): Bump mikehaertl/php-pdftk from 0.14.0 to 0.14.2 Bumps [mikehaertl/php-pdftk](https://github.com/mikehaertl/php-pdftk) from 0.14.0 to 0.14.2. - [Release notes](https://github.com/mikehaertl/php-pdftk/releases) - [Commits](https://github.com/mikehaertl/php-pdftk/compare/0.14.0...0.14.2) --- updated-dependencies: - dependency-name: mikehaertl/php-pdftk dependency-version: 0.14.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 768590bc2e..896ae658aa 100644 --- a/composer.lock +++ b/composer.lock @@ -353,16 +353,16 @@ }, { "name": "mikehaertl/php-pdftk", - "version": "0.14.0", + "version": "0.14.2", "source": { "type": "git", "url": "https://github.com/mikehaertl/php-pdftk.git", - "reference": "a06b335f7456ce097632a5a40494bc9705231aa1" + "reference": "f1f9ac6d6c9ee655504ddfcc0d1be3ff9cbfb3eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikehaertl/php-pdftk/zipball/a06b335f7456ce097632a5a40494bc9705231aa1", - "reference": "a06b335f7456ce097632a5a40494bc9705231aa1", + "url": "https://api.github.com/repos/mikehaertl/php-pdftk/zipball/f1f9ac6d6c9ee655504ddfcc0d1be3ff9cbfb3eb", + "reference": "f1f9ac6d6c9ee655504ddfcc0d1be3ff9cbfb3eb", "shasum": "" }, "require": { @@ -402,9 +402,9 @@ ], "support": { "issues": "https://github.com/mikehaertl/php-pdftk/issues", - "source": "https://github.com/mikehaertl/php-pdftk/tree/0.14.0" + "source": "https://github.com/mikehaertl/php-pdftk/tree/0.14.2" }, - "time": "2025-09-01T16:28:43+00:00" + "time": "2025-10-01T10:06:01+00:00" }, { "name": "mikehaertl/php-shellcommand", From a41620f938646faae6dc23f95174b37dd5f05797 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:33:39 -0300 Subject: [PATCH 0349/5910] fix: unit test Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index c904d791fa..8f4a48df55 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -389,10 +389,6 @@ private function validateIfIssignedByLibresignAppCertificate(array $expectedHash // Check if the signature of the files is valid $rsa = $x509->getPublicKey(); - $rsa->withPadding(RSA::SIGNATURE_PSS); - $rsa->withMGFHash('sha512'); - // See https://tools.ietf.org/html/rfc3447#page-38 - $rsa->withSaltLength(0); $signatureData = $this->getSignatureData(); $signature = base64_decode((string)$signatureData['signature']); @@ -532,10 +528,6 @@ private function createSignatureData(array $hashes): array { ksort($hashes); $privateKey = $this->getPrivateKey(); - $privateKey->withPadding(RSA::SIGNATURE_PSS); - $privateKey->withMGFHash('sha512'); - // See https://tools.ietf.org/html/rfc3447#page-38 - $privateKey->withSaltLength(0); $signature = $privateKey->sign(json_encode($hashes)); return [ From 5d89aefcdfd8150f8d2c2b52492d0de5fa2343e2 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:10:22 -0300 Subject: [PATCH 0350/5910] fix: create patcher for pdfparser Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Vendor/.gitkeep | 0 scoper.inc.php | 11 ++++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) delete mode 100644 lib/Vendor/.gitkeep diff --git a/lib/Vendor/.gitkeep b/lib/Vendor/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scoper.inc.php b/scoper.inc.php index 63d11c2c31..6a19fc19fa 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -79,6 +79,15 @@ static function (string $filePath, string $prefix, string $content): string { $content = str_replace("'phpseclib3\\\\", "'\\\\" . $s_prefix . '\\\\phpseclib3\\\\', $content); $content = str_replace("'\\\\phpseclib3", "'\\\\" . $s_prefix . '\\\\phpseclib3', $content); return $content; - } + }, + // patchers for pdfparser + static function (string $filePath, string $prefix, string $content): string { + if (!str_contains($filePath, 'smalot/pdfparser') || !str_ends_with($filePath, '.php')) { + return $content; + } + $s_prefix = str_replace('\\', '\\\\', $prefix); + $content = str_replace("'\\Smalot\\PdfParser", "'\\\\" . $s_prefix . '\\\\Smalot\\\\PdfParser\\\\', $content); + return $content; + }, ], ]; From 95caa3bbcd9c1b75f987d6871096b2b2fc896abc Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:16:54 -0300 Subject: [PATCH 0351/5910] fix: revert wrong file remove Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Vendor/.gitkeep | 0 scoper.inc.php | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 lib/Vendor/.gitkeep diff --git a/lib/Vendor/.gitkeep b/lib/Vendor/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scoper.inc.php b/scoper.inc.php index 6a19fc19fa..972f06fd2b 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -86,7 +86,7 @@ static function (string $filePath, string $prefix, string $content): string { return $content; } $s_prefix = str_replace('\\', '\\\\', $prefix); - $content = str_replace("'\\Smalot\\PdfParser", "'\\\\" . $s_prefix . '\\\\Smalot\\\\PdfParser\\\\', $content); + $content = str_replace("'\\\\Smalot\\\\PdfParser", "'\\\\" . $s_prefix . '\\\\Smalot\\\\PdfParser', $content); return $content; }, ], From 44d1ab810171bfd1a3707048242128cad1914392 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:15:54 -0300 Subject: [PATCH 0352/5910] fix: unit test Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index 8f4a48df55..d54997a287 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -388,7 +388,8 @@ private function validateIfIssignedByLibresignAppCertificate(array $expectedHash $x509 = $this->getLibresignAppCertificate(); // Check if the signature of the files is valid - $rsa = $x509->getPublicKey(); + $rsa = $x509->getPublicKey() + ->withPadding(RSA::SIGNATURE_PSS); $signatureData = $this->getSignatureData(); $signature = base64_decode((string)$signatureData['signature']); From fb7a07dea3cbc464ebc29ff6baf8d4c37518ad1e Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:30:30 -0300 Subject: [PATCH 0353/5910] fix: set PSS as default Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/Install/SignSetupService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Service/Install/SignSetupService.php b/lib/Service/Install/SignSetupService.php index d54997a287..4dd02b760b 100644 --- a/lib/Service/Install/SignSetupService.php +++ b/lib/Service/Install/SignSetupService.php @@ -528,7 +528,8 @@ private function isExcluded(string $filename): bool { private function createSignatureData(array $hashes): array { ksort($hashes); - $privateKey = $this->getPrivateKey(); + $privateKey = $this->getPrivateKey() + ->withPadding(RSA::SIGNATURE_PSS); $signature = $privateKey->sign(json_encode($hashes)); return [ From f658fe07fa381a0b8620c043fb6445597b16ccb3 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:32:04 -0300 Subject: [PATCH 0354/5910] fix: update to phpseclib3 Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Command/Developer/SignSetup.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/Command/Developer/SignSetup.php b/lib/Command/Developer/SignSetup.php index f8a7e38179..090a169502 100644 --- a/lib/Command/Developer/SignSetup.php +++ b/lib/Command/Developer/SignSetup.php @@ -12,8 +12,9 @@ use OC\Core\Command\Base; use OCA\Libresign\Service\Install\InstallService; use OCA\Libresign\Service\Install\SignSetupService; -use OCA\Libresign\Vendor\phpseclib\Crypt\RSA; -use OCA\Libresign\Vendor\phpseclib\File\X509; +use OCA\Libresign\Vendor\phpseclib3\Crypt\RSA; +use OCA\Libresign\Vendor\phpseclib3\Exception\NoKeyLoadedException; +use OCA\Libresign\Vendor\phpseclib3\File\X509; use OCP\IConfig; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; @@ -57,8 +58,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - $rsa = new RSA(); - if ($rsa->loadKey($privateKey) === false) { + try { + $rsa = RSA::loadPrivateKey($privateKey); + } catch (NoKeyLoadedException) { $output->writeln('Invalid private key'); return 1; } From 36d259c523bbd54c170e62de0b8fd509bb1cf04c Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:05:55 -0300 Subject: [PATCH 0355/5910] chore: stop search early if haven't values to search for Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Controller/IdentifyAccountController.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/Controller/IdentifyAccountController.php b/lib/Controller/IdentifyAccountController.php index 8b494ac00f..07aab7a6ca 100644 --- a/lib/Controller/IdentifyAccountController.php +++ b/lib/Controller/IdentifyAccountController.php @@ -56,15 +56,12 @@ public function __construct( #[RequireManager] #[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/identify-account/search', requirements: ['apiVersion' => '(v1)'])] public function search(string $search = '', int $page = 1, int $limit = 25): DataResponse { - $shareTypes = $this->getShareTypes(); - $lookup = false; - - // only search for string larger than a given threshold - $threshold = 1; - if (strlen($search) < $threshold) { + // only search for string larger than a minimum length + if (strlen($search) < 1) { return new DataResponse(); } + $lookup = false; $offset = $limit * ($page - 1); [$result] = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $limit, $offset); $result['exact'] = $this->unifyResult($result['exact']); From 4c843ae84db1989c2f8c5d622a0d29ea991b81d8 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:11:38 -0300 Subject: [PATCH 0356/5910] feat: Search by signers Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .../Collaborators/SignerPlugin.php | 100 ++++++++++++++++++ lib/Controller/IdentifyAccountController.php | 43 ++++++-- lib/Db/IdentifyMethodMapper.php | 59 +++++++++++ 3 files changed, 196 insertions(+), 6 deletions(-) create mode 100644 lib/Collaboration/Collaborators/SignerPlugin.php diff --git a/lib/Collaboration/Collaborators/SignerPlugin.php b/lib/Collaboration/Collaborators/SignerPlugin.php new file mode 100644 index 0000000000..d3dacb9eba --- /dev/null +++ b/lib/Collaboration/Collaborators/SignerPlugin.php @@ -0,0 +1,100 @@ +userSession->getUser()->getUID(); + + $limit++; + $identifiers = $this->identifyMethodMapper->searchByIdentifierValue( + $search, + $user, + self::$method, + $limit, + $offset, + ); + + $result = ['wide' => [], 'exact' => []]; + + $hasMore = false; + if (count($identifiers) > $limit) { + $hasMore = true; + array_pop($identifiers); + } + + foreach ($identifiers as $row) { + $item = $this->rowToSearchResultItem($row); + if (strtolower($row['identifier_value']) === strtolower($search) + || strtolower($row['display_name']) === strtolower($search) + ) { + $result['exact'][] = $item; + } else { + $result['wide'][] = $item; + } + } + + if (!count($identifiers) && !$this->canValidateMethod()) { + $result['exact'][] = [ + 'label' => $search, + 'shareWithDisplayNameUnique' => $search, + 'key' => self::$method, + 'value' => [ + 'shareWith' => $search, + 'shareType' => self::TYPE_SIGNER, + ], + ]; + } + + $type = new SearchResultType('signer'); + $searchResult->addResultSet($type, $result['wide'], $result['exact']); + + return $hasMore; + } + + private function canValidateMethod(): bool { + return in_array(self::$method, ['Email', 'Account'], true); + } + + private function rowToSearchResultItem(array $row): array { + $item = [ + 'label' => $row['display_name'], + 'shareWithDisplayNameUnique' => $row['identifier_value'], + 'key' => $row['identifier_key'], + 'value' => [ + 'shareWith' => $row['identifier_value'], + 'shareType' => self::TYPE_SIGNER, + ] + ]; + + return $item; + } +} diff --git a/lib/Controller/IdentifyAccountController.php b/lib/Controller/IdentifyAccountController.php index 07aab7a6ca..0592ce5c2d 100644 --- a/lib/Controller/IdentifyAccountController.php +++ b/lib/Controller/IdentifyAccountController.php @@ -9,6 +9,7 @@ namespace OCA\Libresign\Controller; use OCA\Libresign\AppInfo\Application; +use OCA\Libresign\Collaboration\Collaborators\SignerPlugin; use OCA\Libresign\Middleware\Attribute\RequireManager; use OCA\Libresign\ResponseDefinitions; use OCA\Libresign\Service\IdentifyMethod\Account; @@ -55,14 +56,17 @@ public function __construct( #[NoAdminRequired] #[RequireManager] #[ApiRoute(verb: 'GET', url: '/api/{apiVersion}/identify-account/search', requirements: ['apiVersion' => '(v1)'])] - public function search(string $search = '', int $page = 1, int $limit = 25): DataResponse { + public function search(string $search = '', string $method = '', int $page = 1, int $limit = 25): DataResponse { // only search for string larger than a minimum length if (strlen($search) < 1) { return new DataResponse(); } + $shareTypes = $this->getShareTypes(); $lookup = false; + $offset = $limit * ($page - 1); + $this->registerPlugin($method); [$result] = $this->collaboratorSearch->search($search, $shareTypes, $lookup, $limit, $offset); $result['exact'] = $this->unifyResult($result['exact']); $result = $this->unifyResult($result); @@ -75,6 +79,19 @@ public function search(string $search = '', int $page = 1, int $limit = 25): Dat return new DataResponse($return); } + private function registerPlugin(string $method): void { + SignerPlugin::setMethod($method); + + $refObject = new \ReflectionObject($this->collaboratorSearch); + $refProperty = $refObject->getProperty('pluginList'); + $refProperty->setAccessible(true); + + $plugins = $refProperty->getValue($this->collaboratorSearch); + $plugins[SignerPlugin::TYPE_SIGNER] = [SignerPlugin::class]; + + $refProperty->setValue($this->collaboratorSearch, $plugins); + } + private function getShareTypes(): array { if (count($this->shareTypes) > 0) { return $this->shareTypes; @@ -87,6 +104,8 @@ private function getShareTypes(): array { if ($settings['enabled']) { $this->shareTypes[] = IShare::TYPE_USER; } + + $this->shareTypes[] = SignerPlugin::TYPE_SIGNER; return $this->shareTypes; } @@ -106,21 +125,33 @@ private function unifyResult(array $list): array { } private function formatForNcSelect(array $list): array { + $return = []; foreach ($list as $key => $item) { - $list[$key] = [ + $return[$key] = [ 'id' => $item['value']['shareWith'], 'isNoUser' => $item['value']['shareType'] !== IShare::TYPE_USER, 'displayName' => $item['label'], 'subname' => $item['shareWithDisplayNameUnique'] ?? '', - 'shareType' => $item['value']['shareType'], ]; if ($item['value']['shareType'] === IShare::TYPE_EMAIL) { - $list[$key]['icon'] = 'icon-mail'; + $return[$key]['method'] = 'email'; + $return[$key]['icon'] = 'icon-mail'; } elseif ($item['value']['shareType'] === IShare::TYPE_USER) { - $list[$key]['icon'] = 'icon-user'; + $return[$key]['method'] = 'account'; + $return[$key]['icon'] = 'icon-user'; + } elseif ($item['value']['shareType'] === SignerPlugin::TYPE_SIGNER) { + $return[$key]['method'] = $item['key']; + if ($item['key'] === 'email') { + $return[$key]['icon'] = 'icon-mail'; + } elseif ($item['key'] === 'account') { + $return[$key]['icon'] = 'icon-user'; + } else { + $return[$key]['iconSvg'] = 'svg' . ucfirst($item['key']); + $return[$key]['iconName'] = $item['key']; + } } } - return $list; + return $return; } private function addHerselfAccount(array $return, string $search): array { diff --git a/lib/Db/IdentifyMethodMapper.php b/lib/Db/IdentifyMethodMapper.php index 10e7cfbce4..68707c4a39 100644 --- a/lib/Db/IdentifyMethodMapper.php +++ b/lib/Db/IdentifyMethodMapper.php @@ -73,4 +73,63 @@ public function neutralizeDeletedUser(string $userId, string $displayName): void $update->executeStatement(); } } + + public function searchByIdentifierValue(string $search, string $userId, string $method, int $limit = 20, int $offset = 0): array { + $qb = $this->db->getQueryBuilder(); + + $latestQb = $this->db->getQueryBuilder(); + $latestQb->select('im2.identifier_key') + ->addSelect('im2.identifier_value') + ->addSelect($latestQb->func()->max('sr2.created_at', 'created_at')) + ->from('libresign_identify_method', 'im2') + ->join('im2', 'libresign_sign_request', 'sr2', + $latestQb->expr()->eq('sr2.id', 'im2.sign_request_id') + ) + ->join('im2', 'libresign_file', 'f2', + $latestQb->expr()->eq('f2.id', 'sr2.file_id') + ) + ->where($latestQb->expr()->eq('f2.user_id', $latestQb->createNamedParameter($userId))); + if (!empty($method)) { + $latestQb->andWhere($latestQb->expr()->eq('im2.identifier_key', $latestQb->createNamedParameter($method))); + } + $latestQb->andWhere( + $latestQb->expr()->orX( + $latestQb->expr()->iLike( + 'im2.identifier_value', + $latestQb->createNamedParameter('%' . $this->db->escapeLikeParameter($search) . '%') + ), + $latestQb->expr()->iLike( + 'sr2.display_name', + $latestQb->createNamedParameter('%' . $this->db->escapeLikeParameter($search) . '%') + ) + ) + ) + ->groupBy('im2.identifier_key') + ->addGroupBy('im2.identifier_value'); + + foreach ($latestQb->getParameters() as $name => $value) { + $qb->setParameter($name, $value); + } + + $qb->select('im.identifier_key', 'im.identifier_value', 'sr.display_name') + ->from('libresign_identify_method', 'im') + ->join('im', $qb->createFunction('(' . $latestQb->getSQL() . ')'), 'latest', + $qb->expr()->andX( + $qb->expr()->eq('latest.identifier_key', 'im.identifier_key'), + $qb->expr()->eq('latest.identifier_value', 'im.identifier_value') + ) + ) + ->join('im', 'libresign_sign_request', 'sr', + $qb->expr()->eq('sr.id', 'im.sign_request_id'), + ) + ->setMaxResults($limit) + ->setFirstResult($offset); + + $cursor = $qb->executeQuery(); + $return = []; + while ($row = $cursor->fetch()) { + $return[] = $row; + } + return $return; + } } From 5a5f4d262348cf858164005a128160d92a3f9c22 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:14:26 -0300 Subject: [PATCH 0357/5910] fix: add pendign param Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Controller/IdentifyAccountController.php | 1 + lib/Controller/SignFileController.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Controller/IdentifyAccountController.php b/lib/Controller/IdentifyAccountController.php index 0592ce5c2d..071a2b45d0 100644 --- a/lib/Controller/IdentifyAccountController.php +++ b/lib/Controller/IdentifyAccountController.php @@ -46,6 +46,7 @@ public function __construct( * Used to identify who can sign the document. The return of this endpoint is related with Administration Settiongs > LibreSign > Identify method. * * @param string $search search params + * @param string $method filter by method (email, account, sms, signal, telegram, whatsapp, xmpp) * @param int $page the number of page to return. Default: 1 * @param int $limit Total of elements to return. Default: 25 * @return DataResponse diff --git a/lib/Controller/SignFileController.php b/lib/Controller/SignFileController.php index 8bbff6170e..1579e8f089 100644 --- a/lib/Controller/SignFileController.php +++ b/lib/Controller/SignFileController.php @@ -220,7 +220,7 @@ public function signRenew(string $method): DataResponse { * * @param string $uuid UUID of LibreSign file * @param 'account'|'email'|null $identifyMethod Identify signer method - * @param string|null $signMethod Method used to sign the document, i.e. emailToken, account, clickToSign + * @param string|null $signMethod Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp * @param string|null $identify Identify value, i.e. the signer email, account or phone number * @return DataResponse|DataResponse * @@ -246,7 +246,7 @@ public function getCodeUsingUuid(string $uuid, ?string $identifyMethod, ?string * * @param int $fileId Id of LibreSign file * @param 'account'|'email'|null $identifyMethod Identify signer method - * @param string|null $signMethod Method used to sign the document, i.e. emailToken, account, clickToSign + * @param string|null $signMethod Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp * @param string|null $identify Identify value, i.e. the signer email, account or phone number * @return DataResponse|DataResponse * From 10898291601868ee9cb0ac8aaa07c0ed3aaa53e8 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:15:19 -0300 Subject: [PATCH 0358/5910] chore: update openapi Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- openapi-full.json | 13 +++++++++++-- openapi.json | 13 +++++++++++-- src/types/openapi/openapi-full.ts | 6 ++++-- src/types/openapi/openapi.ts | 6 ++++-- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/openapi-full.json b/openapi-full.json index 47a493f511..421a6db16e 100644 --- a/openapi-full.json +++ b/openapi-full.json @@ -5508,6 +5508,15 @@ "default": "" } }, + { + "name": "method", + "in": "query", + "description": "filter by method (email, account, sms, signal, telegram, whatsapp, xmpp)", + "schema": { + "type": "string", + "default": "" + } + }, { "name": "page", "in": "query", @@ -7330,7 +7339,7 @@ "signMethod": { "type": "string", "nullable": true, - "description": "Method used to sign the document, i.e. emailToken, account, clickToSign" + "description": "Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp" }, "identify": { "type": "string", @@ -7490,7 +7499,7 @@ "signMethod": { "type": "string", "nullable": true, - "description": "Method used to sign the document, i.e. emailToken, account, clickToSign" + "description": "Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp" }, "identify": { "type": "string", diff --git a/openapi.json b/openapi.json index 7d000b01f8..432d8504a3 100644 --- a/openapi.json +++ b/openapi.json @@ -5361,6 +5361,15 @@ "default": "" } }, + { + "name": "method", + "in": "query", + "description": "filter by method (email, account, sms, signal, telegram, whatsapp, xmpp)", + "schema": { + "type": "string", + "default": "" + } + }, { "name": "page", "in": "query", @@ -7183,7 +7192,7 @@ "signMethod": { "type": "string", "nullable": true, - "description": "Method used to sign the document, i.e. emailToken, account, clickToSign" + "description": "Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp" }, "identify": { "type": "string", @@ -7343,7 +7352,7 @@ "signMethod": { "type": "string", "nullable": true, - "description": "Method used to sign the document, i.e. emailToken, account, clickToSign" + "description": "Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp" }, "identify": { "type": "string", diff --git a/src/types/openapi/openapi-full.ts b/src/types/openapi/openapi-full.ts index 262d421096..661335d7ed 100644 --- a/src/types/openapi/openapi-full.ts +++ b/src/types/openapi/openapi-full.ts @@ -3397,6 +3397,8 @@ export interface operations { query?: { /** @description search params */ search?: string; + /** @description filter by method (email, account, sms, signal, telegram, whatsapp, xmpp) */ + method?: string; /** @description the number of page to return. Default: 1 */ page?: number; /** @description Total of elements to return. Default: 25 */ @@ -4125,7 +4127,7 @@ export interface operations { * @enum {string|null} */ identifyMethod?: "account" | "email" | null; - /** @description Method used to sign the document, i.e. emailToken, account, clickToSign */ + /** @description Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp */ signMethod?: string | null; /** @description Identify value, i.e. the signer email, account or phone number */ identify?: string | null; @@ -4189,7 +4191,7 @@ export interface operations { * @enum {string|null} */ identifyMethod?: "account" | "email" | null; - /** @description Method used to sign the document, i.e. emailToken, account, clickToSign */ + /** @description Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp */ signMethod?: string | null; /** @description Identify value, i.e. the signer email, account or phone number */ identify?: string | null; diff --git a/src/types/openapi/openapi.ts b/src/types/openapi/openapi.ts index 5397b27750..c6e11dce6c 100644 --- a/src/types/openapi/openapi.ts +++ b/src/types/openapi/openapi.ts @@ -3073,6 +3073,8 @@ export interface operations { query?: { /** @description search params */ search?: string; + /** @description filter by method (email, account, sms, signal, telegram, whatsapp, xmpp) */ + method?: string; /** @description the number of page to return. Default: 1 */ page?: number; /** @description Total of elements to return. Default: 25 */ @@ -3801,7 +3803,7 @@ export interface operations { * @enum {string|null} */ identifyMethod?: "account" | "email" | null; - /** @description Method used to sign the document, i.e. emailToken, account, clickToSign */ + /** @description Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp */ signMethod?: string | null; /** @description Identify value, i.e. the signer email, account or phone number */ identify?: string | null; @@ -3865,7 +3867,7 @@ export interface operations { * @enum {string|null} */ identifyMethod?: "account" | "email" | null; - /** @description Method used to sign the document, i.e. emailToken, account, clickToSign */ + /** @description Method used to sign the document, i.e. emailToken, account, clickToSign, sms, signal, telegram, whatsapp, xmpp */ signMethod?: string | null; /** @description Identify value, i.e. the signer email, account or phone number */ identify?: string | null; From a795fbf1a03969e5bbc15fb7edee7bd56b96fc6d Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:17:40 -0300 Subject: [PATCH 0359/5910] fix: remove todo and fix method to use twofactor_gateway Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .../SignatureMethod/TokenService.php | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/lib/Service/IdentifyMethod/SignatureMethod/TokenService.php b/lib/Service/IdentifyMethod/SignatureMethod/TokenService.php index c576ce6c91..6ae0b1f197 100644 --- a/lib/Service/IdentifyMethod/SignatureMethod/TokenService.php +++ b/lib/Service/IdentifyMethod/SignatureMethod/TokenService.php @@ -9,49 +9,42 @@ namespace OCA\Libresign\Service\IdentifyMethod\SignatureMethod; use OCA\Libresign\Service\MailService; +use OCP\AppFramework\OCS\OCSForbiddenException; +use OCP\IL10N; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; +use OCP\Server; class TokenService { public const TOKEN_LENGTH = 6; - public const SIGN_PASSWORD = 'password'; - public const SIGN_SIGNAL = 'signal'; - public const SIGN_TELEGRAM = 'telegram'; - public const SIGN_SMS = 'sms'; - public const SIGN_EMAIL = 'email'; public function __construct( private ISecureRandom $secureRandom, private IHasher $hasher, private MailService $mail, + private IL10N $l10n, ) { } - /** - * @todo check this code and put to work - */ - public function sendCodeByGateway(string $code, string $gatewayName): void { - // $user = \OCP\Server::get(IUserSession::class)->getUser(); - // $gateway = $this->getGateway($user, $gatewayName); + public function sendCodeByGateway(string $identifier, string $code, string $gatewayName): string { + $gateway = $this->getGateway($gatewayName); - // $userAccount = $this->accountManager->getAccount($user); - // $identifier = $userAccount->getProperty(IAccountManager::PROPERTY_PHONE)->getValue(); - // $gateway->send($user, $identifier, $this->l10n->t('%s is your LibreSign verification code.', $code)); - // } + $code = $this->secureRandom->generate(self::TOKEN_LENGTH, ISecureRandom::CHAR_DIGITS); + $gateway->send($identifier, $this->l10n->t('%s is your LibreSign verification code.', $code)); + return $this->hasher->hash($code); + } - // /** - // * @throws OCSForbiddenException - // */ - // private function getGateway(IUser $user, string $gatewayName): \OCA\TwoFactorGateway\Service\Gateway\IGateway { - // if (!$this->appManager->isEnabledForUser('twofactor_gateway', $user)) { - // throw new OCSForbiddenException($this->l10n->t('Authorize signing using %s token is disabled because Nextcloud Two-Factor Gateway is not enabled.', $gatewayName)); - // } - // $factory = $this->serverContainer->get('\OCA\TwoFactorGateway\Service\Gateway\Factory'); - // $gateway = $factory->getGateway($gatewayName); - // if (!$gateway->getConfig()->isComplete()) { - // throw new OCSForbiddenException($this->l10n->t('Gateway %s not configured on Two-Factor Gateway.', $gatewayName)); - // } - // return $gateway; + /** + * @throws OCSForbiddenException + * @return \OCA\TwoFactorGateway\Provider\Gateway\IGateway + */ + private function getGateway(string $gatewayName) { + $factory = Server::get('\OCA\TwoFactorGateway\Service\Gateway\Factory'); + $gateway = $factory->getGateway($gatewayName); + if (!$gateway->getConfig()->isComplete()) { + throw new OCSForbiddenException($this->l10n->t('Gateway %s not configured on Two-Factor Gateway.', $gatewayName)); + } + return $gateway; } public function sendCodeByEmail(string $email, string $displayName): string { From 28875646277a850c5b791911b6302481d2fee697 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:21:31 -0300 Subject: [PATCH 0360/5910] chore: remove direct access to property and implement getter Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- .../IdentifyMethod/AbstractIdentifyMethod.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index 1718776ade..77cb40fdac 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -18,6 +18,7 @@ use OCA\Libresign\Exception\LibresignException; use OCA\Libresign\Helper\JSActions; use OCA\Libresign\Service\IdentifyMethod\SignatureMethod\AbstractSignatureMethod; +use OCA\Libresign\Service\IdentifyMethod\SignatureMethod\ISignatureMethod; use OCA\Libresign\Service\SessionService; use OCA\Libresign\Vendor\Wobeto\EmailBlur\Blur; use OCP\IUser; @@ -34,7 +35,7 @@ abstract class AbstractIdentifyMethod implements IIdentifyMethod { * @var string[] */ public array $availableSignatureMethods = []; - protected string $defaultSignatureMethod = ''; + protected string $defaultSignatureMethod = ISignatureMethod::SIGNATURE_METHOD_CLICK_TO_SIGN; /** * @var AbstractSignatureMethod[] */ @@ -85,8 +86,12 @@ public function signatureMethodsToArray(): array { ], $this->signatureMethods); } + public function getAvailableSignatureMethods(): array { + return $this->availableSignatureMethods; + } + public function getEmptyInstanceOfSignatureMethodByName(string $name): AbstractSignatureMethod { - if (!in_array($name, $this->availableSignatureMethods)) { + if (!in_array($name, $this->getAvailableSignatureMethods())) { throw new InvalidArgumentException(sprintf('%s is not a valid signature method of identify method %s', $name, $this->getName())); } $className = 'OCA\Libresign\Service\IdentifyMethod\\SignatureMethod\\' . ucfirst($name); @@ -310,7 +315,8 @@ private function loadSavedSettings(): void { return $carry; }, []); $enabled = false; - foreach ($this->availableSignatureMethods as $signatureMethodName) { + $availableSignatureMethods = $this->getAvailableSignatureMethods(); + foreach ($availableSignatureMethods as $signatureMethodName) { $this->signatureMethods[$signatureMethodName] = $this->getEmptyInstanceOfSignatureMethodByName($signatureMethodName); if (isset($this->settings['signatureMethods'][$signatureMethodName]['enabled']) From 02c1d605abc34ce9bfbac360b3e0e5d20776331c Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:22:10 -0300 Subject: [PATCH 0361/5910] fix: don't return not allowed settings Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/IdentifyMethod/AbstractIdentifyMethod.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index 77cb40fdac..dcb6f91081 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -326,6 +326,13 @@ private function loadSavedSettings(): void { $enabled = true; } } + if (isset($this->settings['signatureMethods'])) { + foreach (array_keys($this->settings['signatureMethods']) as $signatureMethodName) { + if (!in_array($signatureMethodName, $availableSignatureMethods, true)) { + unset($this->settings['signatureMethods'][$signatureMethodName]); + } + } + } if (!$enabled && $this->defaultSignatureMethod) { $this->signatureMethods[$this->defaultSignatureMethod]->enable(); } From d3660d41ee30d4d5890fa365cb59a4c0cb96f1a3 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:23:17 -0300 Subject: [PATCH 0362/5910] chore: add setter and getter to name Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/IdentifyMethod/AbstractIdentifyMethod.php | 8 ++++++-- lib/Service/IdentifyMethod/Account.php | 2 +- lib/Service/IdentifyMethod/Email.php | 2 +- lib/Service/IdentifyMethod/IIdentifyMethod.php | 1 + .../IdentifyMethod/SignatureMethod/ClickToSign.php | 2 +- lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php | 2 +- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php index dcb6f91081..ed97bb50a3 100644 --- a/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/AbstractIdentifyMethod.php @@ -61,6 +61,10 @@ public function getFriendlyName(): string { return $this->friendlyName; } + public function setFriendlyName(string $friendlyName): void { + $this->friendlyName = $friendlyName; + } + public function setCodeSentByUser(string $code): void { $this->codeSentByUser = $code; } @@ -80,7 +84,7 @@ public function getEntity(): IdentifyMethod { public function signatureMethodsToArray(): array { return array_map(fn (AbstractSignatureMethod $method) => [ - 'label' => $method->friendlyName, + 'label' => $method->getFriendlyName(), 'name' => $method->getName(), 'enabled' => $method->isEnabled(), ], $this->signatureMethods); @@ -289,7 +293,7 @@ protected function getSettingsFromDatabase(array $default = [], array $immutable $default = array_merge( [ 'name' => $this->name, - 'friendly_name' => $this->friendlyName, + 'friendly_name' => $this->getFriendlyName(), 'enabled' => true, 'mandatory' => true, 'signatureMethods' => $this->signatureMethodsToArray(), diff --git a/lib/Service/IdentifyMethod/Account.php b/lib/Service/IdentifyMethod/Account.php index 0771b688e3..e9f8dcf577 100644 --- a/lib/Service/IdentifyMethod/Account.php +++ b/lib/Service/IdentifyMethod/Account.php @@ -47,7 +47,7 @@ public function __construct( private MailService $mail, ) { // TRANSLATORS Name of possible authenticator method. This signalize that the signer could be identified by Nextcloud acccount - $this->friendlyName = $this->identifyService->getL10n()->t('Account'); + $this->setFriendlyName($this->identifyService->getL10n()->t('Account')); parent::__construct( $identifyService, ); diff --git a/lib/Service/IdentifyMethod/Email.php b/lib/Service/IdentifyMethod/Email.php index 78e0cfdfea..30be6c60ed 100644 --- a/lib/Service/IdentifyMethod/Email.php +++ b/lib/Service/IdentifyMethod/Email.php @@ -37,7 +37,7 @@ public function __construct( private LoggerInterface $logger, ) { // TRANSLATORS Name of possible authenticator method. This signalize that the signer could be identified by email - $this->friendlyName = $this->identifyService->getL10n()->t('Email'); + $this->setFriendlyName($this->identifyService->getL10n()->t('Email')); parent::__construct( $identifyService, ); diff --git a/lib/Service/IdentifyMethod/IIdentifyMethod.php b/lib/Service/IdentifyMethod/IIdentifyMethod.php index a7d09ab297..e18e8d24c5 100644 --- a/lib/Service/IdentifyMethod/IIdentifyMethod.php +++ b/lib/Service/IdentifyMethod/IIdentifyMethod.php @@ -15,6 +15,7 @@ interface IIdentifyMethod { public static function getId(): string; public function getName(): string; + public function setFriendlyName(string $friendlyName): void; public function getFriendlyName(): string; public function setCodeSentByUser(string $code): void; public function cleanEntity(): void; diff --git a/lib/Service/IdentifyMethod/SignatureMethod/ClickToSign.php b/lib/Service/IdentifyMethod/SignatureMethod/ClickToSign.php index 8a34aecf12..bfcfd17b71 100644 --- a/lib/Service/IdentifyMethod/SignatureMethod/ClickToSign.php +++ b/lib/Service/IdentifyMethod/SignatureMethod/ClickToSign.php @@ -15,7 +15,7 @@ public function __construct( protected IdentifyService $identifyService, ) { // TRANSLATORS Name of possible authenticator method. This signalize that the signer only need to click to sign after was identified - $this->friendlyName = $this->identifyService->getL10n()->t('Click to sign'); + $this->setFriendlyName($this->identifyService->getL10n()->t('Click to sign')); parent::__construct( $identifyService, ); diff --git a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php index 2aa91ec597..8a43a667de 100644 --- a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php +++ b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php @@ -19,7 +19,7 @@ public function __construct( protected TokenService $tokenService, ) { // TRANSLATORS Name of possible authenticator method. This signalize that the signer could be identified by email - $this->friendlyName = $this->identifyService->getL10n()->t('Email token'); + $this->setFriendlyName($this->identifyService->getL10n()->t('Email token')); parent::__construct( $identifyService, ); From 9858fe5842e165d9f9a814371c50767d1e90eff1 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:24:14 -0300 Subject: [PATCH 0363/5910] fix: make more generic Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- lib/Service/SignFileService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Service/SignFileService.php b/lib/Service/SignFileService.php index 91a11b5d58..23ab1b0b92 100644 --- a/lib/Service/SignFileService.php +++ b/lib/Service/SignFileService.php @@ -37,7 +37,7 @@ use OCA\Libresign\Helper\JSActions; use OCA\Libresign\Helper\ValidateHelper; use OCA\Libresign\Service\IdentifyMethod\IIdentifyMethod; -use OCA\Libresign\Service\IdentifyMethod\SignatureMethod\EmailToken; +use OCA\Libresign\Service\IdentifyMethod\SignatureMethod\IToken; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\AppFramework\Utility\ITimeFactory; @@ -611,7 +611,7 @@ public function requestCode( } catch (InvalidArgumentException) { continue; } - /** @var EmailToken $signatureMethod */ + /** @var IToken $signatureMethod */ $signatureMethod->requestCode($identify); return; } From 260c0574c3d0666476432a8b3d2000e373cbee24 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Mon, 22 Sep 2025 17:24:59 -0300 Subject: [PATCH 0364/5910] feat: change way to add a signer, use a modal to be possible split Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- src/Components/Request/IdentifySigner.vue | 156 +++++------------- .../{AccountOrEmail.vue => SignerSelect.vue} | 57 ++++--- .../RightSidebar/RequestSignatureTab.vue | 84 +++++++++- 3 files changed, 154 insertions(+), 143 deletions(-) rename src/Components/Request/{AccountOrEmail.vue => SignerSelect.vue} (76%) diff --git a/src/Components/Request/IdentifySigner.vue b/src/Components/Request/IdentifySigner.vue index bc0ac829e3..17e66729f4 100644 --- a/src/Components/Request/IdentifySigner.vue +++ b/src/Components/Request/IdentifySigner.vue @@ -4,13 +4,12 @@ -->