Compare commits

..

16 Commits

Author SHA1 Message Date
dependabot[bot]
e665a895b1 Chore(deps-dev): Update symfony/event-dispatcher requirement
Updates the requirements on [symfony/event-dispatcher](https://github.com/symfony/event-dispatcher) to permit the latest version.
- [Release notes](https://github.com/symfony/event-dispatcher/releases)
- [Changelog](https://github.com/symfony/event-dispatcher/blob/7.3/CHANGELOG.md)
- [Commits](https://github.com/symfony/event-dispatcher/compare/v5.4.0...v7.3.3)

---
updated-dependencies:
- dependency-name: symfony/event-dispatcher
  dependency-version: 7.3.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-30 02:05:45 +00:00
Nextcloud bot
a200afa168 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-30 00:29:22 +00:00
Nextcloud bot
3277de5cb4 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-29 00:29:34 +00:00
Nextcloud bot
34effdc00e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-28 00:29:33 +00:00
Nextcloud bot
014372a21a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-27 00:29:28 +00:00
Nextcloud bot
7674a85f68 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-26 00:30:38 +00:00
github-actions[bot]
357c6c1c5a Merge pull request #7178 from nextcloud/automated/noid/main-update-nextcloud-ocp
[main] Update nextcloud/ocp dependency
2025-08-24 03:08:30 +00:00
nextcloud-command
23be704099 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2025-08-24 02:44:14 +00:00
Nextcloud bot
2571d48290 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-23 00:29:01 +00:00
Luka Trovic
c513b1d5b5 Merge pull request #7177 from nextcloud/clear-deleted-attachment-sharing-records
Clean attachment sharing records after permanent deleted
2025-08-22 20:47:38 +02:00
Luka Trovic
b80e0d9297 fix: clean attachment sharing records after permanent deleted
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2025-08-22 11:09:53 +02:00
Nextcloud bot
382c05ed8d fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-22 00:28:52 +00:00
Nextcloud bot
1283b8d78a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-20 00:28:46 +00:00
Nextcloud bot
465f24f2f1 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-19 00:31:12 +00:00
github-actions[bot]
ba0d211720 Merge pull request #7171 from nextcloud/automated/noid/main-update-nextcloud-ocp
[main] Update nextcloud/ocp dependency
2025-08-17 03:49:14 +00:00
nextcloud-command
23f56be988 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2025-08-17 03:37:30 +00:00
30 changed files with 146 additions and 43 deletions

View File

@@ -16,7 +16,7 @@ jobs:
node-version: [16.x]
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/checkout@v4.2.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
with:

View File

@@ -35,7 +35,7 @@ jobs:
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: ${{ env.APP_NAME }}
@@ -149,7 +149,7 @@ jobs:
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
persist-credentials: false

View File

@@ -51,7 +51,7 @@ jobs:
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@v5.0.0
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
@@ -64,12 +64,12 @@ jobs:
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Checkout ${{ env.APP_NAME }}
uses: actions/checkout@v5.0.0
uses: actions/checkout@v4.2.2
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout text
uses: actions/checkout@v5.0.0
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/text
ref: ${{ env.text_app_ref }}

View File

@@ -52,7 +52,7 @@ jobs:
steps:
- name: Checkout server
uses: actions/checkout@v5.0.0
uses: actions/checkout@v4.2.2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
@@ -66,12 +66,12 @@ jobs:
cd build/integration && composer require --dev phpunit/phpunit:~9
- name: Checkout app
uses: actions/checkout@v5.0.0
uses: actions/checkout@v4.2.2
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout activity
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: nextcloud/activity
ref: ${{ matrix.server-versions }}

View File

@@ -56,7 +56,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -24,7 +24,7 @@ jobs:
php-versions: ${{ steps.versions.outputs.php-versions }}
steps:
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
@@ -43,7 +43,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -12,7 +12,7 @@ jobs:
node-version: [14.x]
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/checkout@v4.2.2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.4.0
with:

View File

@@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout
id: checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
ref: ${{ matrix.branches }}

View File

@@ -24,7 +24,7 @@ jobs:
matrix: ${{ steps.versions.outputs.sparse-matrix }}
steps:
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
@@ -89,7 +89,7 @@ jobs:
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
@@ -97,7 +97,7 @@ jobs:
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}

View File

@@ -25,7 +25,7 @@ jobs:
server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
@@ -92,7 +92,7 @@ jobs:
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
@@ -100,7 +100,7 @@ jobs:
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}

View File

@@ -25,7 +25,7 @@ jobs:
server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
@@ -81,7 +81,7 @@ jobs:
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
@@ -89,7 +89,7 @@ jobs:
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
path: apps/${{ env.APP_NAME }}

View File

@@ -24,7 +24,7 @@ jobs:
name: static-psalm-analysis
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest-low
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false

View File

@@ -29,7 +29,7 @@ jobs:
steps:
- id: checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
ref: ${{ matrix.branches }}

8
composer.lock generated
View File

@@ -380,12 +380,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "c2c75ad8fdc54cbc6341764b5a2a8ecf860e6160"
"reference": "1baa9849e11228754ed6027612e4e140cb855185"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/c2c75ad8fdc54cbc6341764b5a2a8ecf860e6160",
"reference": "c2c75ad8fdc54cbc6341764b5a2a8ecf860e6160",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/1baa9849e11228754ed6027612e4e140cb855185",
"reference": "1baa9849e11228754ed6027612e4e140cb855185",
"shasum": ""
},
"require": {
@@ -421,7 +421,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2025-08-10T01:01:23+00:00"
"time": "2025-08-22T00:50:40+00:00"
},
{
"name": "nikic/php-parser",

View File

@@ -1,6 +1,9 @@
OC.L10N.register(
"deck",
{
"The file was uploaded" : "Файл быў запампаваны.",
"The file was only partially uploaded" : "Файл быў запампаваны толькі часткова",
"No file was uploaded" : "Ніводзін файл не быў запампаваны",
"Missing a temporary folder" : "Адсутнічае часовая папка",
"Could not write file to disk" : "Не ўдалося запісаць файл на дыск",
"A PHP extension stopped the file upload" : "Пашырэнне PHP спыніла запампоўванне файла",
@@ -8,25 +11,39 @@ OC.L10N.register(
"Done" : "Гатова",
"File" : "Файл",
"Cancel" : "Скасаваць",
"File already exists" : "Файл ужо існуе",
"A file with the name {filename} already exists." : "Файл з назвай {filename} ужо існуе.",
"Do you want to overwrite it?" : "Хочаце перазапісаць яго?",
"Overwrite file" : "Перазапісаць файл",
"Keep existing file" : "Пакінуць існуючы файл",
"Active filters" : "Актыўныя фільтры",
"Apply filter" : "Ужыць фільтр",
"Open" : "Адкрыць",
"Clear filter" : "Ачысціць фільтр",
"Open details" : "Адкрыць падрабязнасці",
"Details" : "Падрабязнасці",
"Sharing" : "Абагульванне",
"Tags" : "Тэгі",
"Activity" : "Актыўнасць",
"Undo" : "Адрабіць",
"Transfer" : "Перадаць",
"(Group)" : "(Група)",
"Can edit" : "Можа рэдагаваць",
"Can share" : "Можа абагульваць",
"Owner" : "Уладальнік",
"Delete" : "Выдаліць",
"Edit" : "Рэдагаваць",
"Members" : "Удзельнікі",
"Show in Files" : "Паказаць у Файлах",
"Download" : "Спампаваць",
"Modified" : "Зменены",
"Comments" : "Каментарыі",
"Save" : "Захаваць",
"Created:" : "Створана:",
"Reply" : "Адказаць",
"Update" : "Абнавіць",
"Description" : "Апісанне",
"(group)" : "(група)",
"Open link" : "Адкрыць спасылку",
"seconds ago" : "с таму",
"Keyboard shortcuts" : "Спалучэнні клавіш",
@@ -34,8 +51,10 @@ OC.L10N.register(
"Action" : "Дзеянне",
"Search" : "Пошук",
"Shared with you" : "Абагулена з вамі",
"Cancel edit" : "Скасаваць рэдагаванне",
"An error occurred" : "Узнікла памылка",
"No notifications" : "Няма апавяшчэнняў",
"Export" : "Экспарт",
"Today" : "Сёння",
"Close" : "Закрыць",
"Share" : "Абагуліць"

View File

@@ -1,4 +1,7 @@
{ "translations": {
"The file was uploaded" : "Файл быў запампаваны.",
"The file was only partially uploaded" : "Файл быў запампаваны толькі часткова",
"No file was uploaded" : "Ніводзін файл не быў запампаваны",
"Missing a temporary folder" : "Адсутнічае часовая папка",
"Could not write file to disk" : "Не ўдалося запісаць файл на дыск",
"A PHP extension stopped the file upload" : "Пашырэнне PHP спыніла запампоўванне файла",
@@ -6,25 +9,39 @@
"Done" : "Гатова",
"File" : "Файл",
"Cancel" : "Скасаваць",
"File already exists" : "Файл ужо існуе",
"A file with the name {filename} already exists." : "Файл з назвай {filename} ужо існуе.",
"Do you want to overwrite it?" : "Хочаце перазапісаць яго?",
"Overwrite file" : "Перазапісаць файл",
"Keep existing file" : "Пакінуць існуючы файл",
"Active filters" : "Актыўныя фільтры",
"Apply filter" : "Ужыць фільтр",
"Open" : "Адкрыць",
"Clear filter" : "Ачысціць фільтр",
"Open details" : "Адкрыць падрабязнасці",
"Details" : "Падрабязнасці",
"Sharing" : "Абагульванне",
"Tags" : "Тэгі",
"Activity" : "Актыўнасць",
"Undo" : "Адрабіць",
"Transfer" : "Перадаць",
"(Group)" : "(Група)",
"Can edit" : "Можа рэдагаваць",
"Can share" : "Можа абагульваць",
"Owner" : "Уладальнік",
"Delete" : "Выдаліць",
"Edit" : "Рэдагаваць",
"Members" : "Удзельнікі",
"Show in Files" : "Паказаць у Файлах",
"Download" : "Спампаваць",
"Modified" : "Зменены",
"Comments" : "Каментарыі",
"Save" : "Захаваць",
"Created:" : "Створана:",
"Reply" : "Адказаць",
"Update" : "Абнавіць",
"Description" : "Апісанне",
"(group)" : "(група)",
"Open link" : "Адкрыць спасылку",
"seconds ago" : "с таму",
"Keyboard shortcuts" : "Спалучэнні клавіш",
@@ -32,8 +49,10 @@
"Action" : "Дзеянне",
"Search" : "Пошук",
"Shared with you" : "Абагулена з вамі",
"Cancel edit" : "Скасаваць рэдагаванне",
"An error occurred" : "Узнікла памылка",
"No notifications" : "Няма апавяшчэнняў",
"Export" : "Экспарт",
"Today" : "Сёння",
"Close" : "Закрыць",
"Share" : "Абагуліць"

View File

@@ -124,6 +124,7 @@ OC.L10N.register(
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Ez a megjegyzés több mint %s karakter hosszú.\nMellékletként lett hozzáadva a(z) %s nevű kártyához.\nEzen az URL-en érhető el: %s.",
"Attachments" : "Mellékletek",
"File" : "Fájl",
"date" : "dátum",
"Card not found" : "A kártya nem található",
"Path is already shared with this card" : "Az útvonal már meg van osztva ezzel a kártyával",
"Invalid date, date format must be YYYY-MM-DD" : "Érvénytelen dátum, a dátumnak YYYY-MM-DD formátumúnak kell lennie",
@@ -239,6 +240,7 @@ OC.L10N.register(
"Modified" : "Módosítva",
"Created" : "Létrehozva",
"The title cannot be empty." : "A cím nem lehet üres.",
"Cannot close unsaved card!" : "A mentetlen kártya nem zárható be!",
"Open in sidebar view" : "Oldalsáv nézet megnyitása",
"Open in bigger view" : "Megtekintés nagyobb nézetben",
"Comments" : "Hozzászólások",
@@ -253,6 +255,7 @@ OC.L10N.register(
"Reply" : "Válasz",
"Update" : "Frissítés",
"Write a description …" : "Leírás megadása…",
"Could not save description" : "A leírás mentése sikertelen",
"Description" : "Leírás",
"(Unsaved)" : "(Nem mentett)",
"(Saving…)" : "(Mentés…)",

View File

@@ -122,6 +122,7 @@
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Ez a megjegyzés több mint %s karakter hosszú.\nMellékletként lett hozzáadva a(z) %s nevű kártyához.\nEzen az URL-en érhető el: %s.",
"Attachments" : "Mellékletek",
"File" : "Fájl",
"date" : "dátum",
"Card not found" : "A kártya nem található",
"Path is already shared with this card" : "Az útvonal már meg van osztva ezzel a kártyával",
"Invalid date, date format must be YYYY-MM-DD" : "Érvénytelen dátum, a dátumnak YYYY-MM-DD formátumúnak kell lennie",
@@ -237,6 +238,7 @@
"Modified" : "Módosítva",
"Created" : "Létrehozva",
"The title cannot be empty." : "A cím nem lehet üres.",
"Cannot close unsaved card!" : "A mentetlen kártya nem zárható be!",
"Open in sidebar view" : "Oldalsáv nézet megnyitása",
"Open in bigger view" : "Megtekintés nagyobb nézetben",
"Comments" : "Hozzászólások",
@@ -251,6 +253,7 @@
"Reply" : "Válasz",
"Update" : "Frissítés",
"Write a description …" : "Leírás megadása…",
"Could not save description" : "A leírás mentése sikertelen",
"Description" : "Leírás",
"(Unsaved)" : "(Nem mentett)",
"(Saving…)" : "(Mentés…)",

View File

@@ -63,7 +63,7 @@ OC.L10N.register(
"Reply" : "Atbildēt",
"Update" : "Atjaunināt",
"Description" : "Apraksts",
"Select Date" : "Izvēlieties datumu",
"Select Date" : "Atlasīt datumu",
"Later today {timeLocale}" : "Vēlāk šodien {timeLocale}",
"Set due date for later today" : "Iestatīt beigu datumu vēlāk šodienā",
"(group)" : "(grupa)",

View File

@@ -61,7 +61,7 @@
"Reply" : "Atbildēt",
"Update" : "Atjaunināt",
"Description" : "Apraksts",
"Select Date" : "Izvēlieties datumu",
"Select Date" : "Atlasīt datumu",
"Later today {timeLocale}" : "Vēlāk šodien {timeLocale}",
"Set due date for later today" : "Iestatīt beigu datumu vēlāk šodienā",
"(group)" : "(grupa)",

View File

@@ -88,7 +88,7 @@ OC.L10N.register(
"Cards due tomorrow" : "Картки на завтра",
"Upcoming cards" : "Очікують на виконання",
"Load more" : "Більше",
"Welcome to Nextcloud Deck!" : "Ласкаво просимо до колоди Nextcloud!",
"Welcome to Nextcloud Deck!" : "Ласкаво просимо до Колоди для Nextcloud!",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картка \"%s\" на \"%s\" була призначена вам %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} призначив вам карту {deck-card} на {deck-board}.",
"The card \"%s\" on \"%s\" has reached its due date." : "Термін дії картки \"%s\" на \"%s\" закінчився.",
@@ -97,7 +97,7 @@ OC.L10N.register(
"{user} has mentioned you in a comment on {deck-card}." : "{user} згадав вас у коментарі до {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Дошку \"%s\" з вами поділився %s.",
"{user} has shared {deck-board} with you." : "{user} поділився з вами {deck-board}.",
"Deck board" : "Дошка Deck",
"Deck board" : "Дошка колоди",
"Owned by %1$s" : "Належить %1$s",
"Deck boards, cards and comments" : "Дошки колод, карти та коментарі",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "З %1$s, в %2$s/%3$s, у власності %4$s",
@@ -327,7 +327,7 @@ OC.L10N.register(
"All boards" : "Усі дошки",
"Archived boards" : "Архівні дошки",
"Shared with you" : "Вам надано доступ",
"Deck settings" : "Налаштування колоди",
"Deck settings" : "Налаштування",
"Use bigger card view" : "Режим перегляду зі збільшеними картками",
"Show card ID badge" : "Покажіть бейдж з ідентифікаційною карткою",
"Show boards in calendar/tasks" : "Показувати дошки в календарі та завданнях",

View File

@@ -86,7 +86,7 @@
"Cards due tomorrow" : "Картки на завтра",
"Upcoming cards" : "Очікують на виконання",
"Load more" : "Більше",
"Welcome to Nextcloud Deck!" : "Ласкаво просимо до колоди Nextcloud!",
"Welcome to Nextcloud Deck!" : "Ласкаво просимо до Колоди для Nextcloud!",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Картка \"%s\" на \"%s\" була призначена вам %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} призначив вам карту {deck-card} на {deck-board}.",
"The card \"%s\" on \"%s\" has reached its due date." : "Термін дії картки \"%s\" на \"%s\" закінчився.",
@@ -95,7 +95,7 @@
"{user} has mentioned you in a comment on {deck-card}." : "{user} згадав вас у коментарі до {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "Дошку \"%s\" з вами поділився %s.",
"{user} has shared {deck-board} with you." : "{user} поділився з вами {deck-board}.",
"Deck board" : "Дошка Deck",
"Deck board" : "Дошка колоди",
"Owned by %1$s" : "Належить %1$s",
"Deck boards, cards and comments" : "Дошки колод, карти та коментарі",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "З %1$s, в %2$s/%3$s, у власності %4$s",
@@ -325,7 +325,7 @@
"All boards" : "Усі дошки",
"Archived boards" : "Архівні дошки",
"Shared with you" : "Вам надано доступ",
"Deck settings" : "Налаштування колоди",
"Deck settings" : "Налаштування",
"Use bigger card view" : "Режим перегляду зі збільшеними картками",
"Show card ID badge" : "Покажіть бейдж з ідентифікаційною карткою",
"Show boards in calendar/tasks" : "Показувати дошки в календарі та завданнях",

View File

@@ -14,6 +14,7 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\InvalidAttachmentType;
use OCA\Deck\Service\AttachmentService;
use OCA\Deck\Sharing\DeckShareProvider;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJob;
use OCP\BackgroundJob\TimedJob;
@@ -30,14 +31,25 @@ class DeleteCron extends TimedJob {
private $attachmentMapper;
/** @var StackMapper */
private $stackMapper;
/** @var DeckShareProvider */
private $deckShareProvider;
public function __construct(ITimeFactory $time, BoardMapper $boardMapper, CardMapper $cardMapper, AttachmentService $attachmentService, AttachmentMapper $attachmentMapper, StackMapper $stackMapper) {
public function __construct(
ITimeFactory $time,
BoardMapper $boardMapper,
CardMapper $cardMapper,
AttachmentService $attachmentService,
AttachmentMapper $attachmentMapper,
StackMapper $stackMapper,
DeckShareProvider $deckShareProvider,
) {
parent::__construct($time);
$this->boardMapper = $boardMapper;
$this->cardMapper = $cardMapper;
$this->attachmentService = $attachmentService;
$this->attachmentMapper = $attachmentMapper;
$this->stackMapper = $stackMapper;
$this->deckShareProvider = $deckShareProvider;
$this->setInterval(60 * 60 * 24);
$this->setTimeSensitivity(IJob::TIME_INSENSITIVE);
@@ -70,6 +82,12 @@ class DeleteCron extends TimedJob {
$this->attachmentMapper->delete($attachment);
}
// Delete orphaned attachment shares
$shares = $this->deckShareProvider->getOrphanedAttachmentShares();
foreach ($shares as $share) {
$this->deckShareProvider->delete($share);
}
$stacks = $this->stackMapper->findToDelete();
foreach ($stacks as $stack) {
$this->stackMapper->delete($stack);

View File

@@ -645,4 +645,16 @@ class CardMapper extends QBMapper implements IPermissionMapper {
$result->closeCursor();
}
public function getAllCardIds(): array {
$qb = $this->db->getQueryBuilder();
$qb->select('id')
->from('deck_cards');
$result = $qb->executeQuery();
$ids = [];
while ($row = $result->fetch()) {
$ids[] = (int)$row['id'];
}
return $ids;
}
}

View File

@@ -1046,4 +1046,21 @@ class DeckShareProvider implements \OCP\Share\IShareProvider {
}
$cursor->closeCursor();
}
public function getOrphanedAttachmentShares(): array {
$allCardIds = $this->cardMapper->getAllCardIds();
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('*')
->from('share', 's')
->where($qb->expr()->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_DECK)))
->andWhere($qb->expr()->notIn('s.share_with', $qb->createNamedParameter($allCardIds, IQueryBuilder::PARAM_STR_ARRAY)));
$cursor = $qb->execute();
$shares = [];
while ($data = $cursor->fetch()) {
$shares[] = $this->createShareObject($data);
}
return $shares;
}
}

View File

@@ -5,7 +5,7 @@
"guzzlehttp/guzzle": "7.9.2",
"jarnaiz/behat-junit-formatter": "^1.3",
"sabre/dav": "4.7.0",
"symfony/event-dispatcher": "~5.4"
"symfony/event-dispatcher": "~7.3"
},
"autoload": {
"psr-0": {

View File

@@ -35,6 +35,7 @@ use OCA\Deck\Db\StackMapper;
use OCA\Deck\InvalidAttachmentType;
use OCA\Deck\Service\AttachmentService;
use OCA\Deck\Service\IAttachmentService;
use OCA\Deck\Sharing\DeckShareProvider;
use OCP\AppFramework\Utility\ITimeFactory;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -53,6 +54,8 @@ class DeleteCronTest extends TestCase {
private $attachmentMapper;
/** @var StackMapper|MockObject */
private $stackMapper;
/** @var DeckShareProvider */
private $deckShareProvider;
/** @var DeleteCron */
protected $deleteCron;
@@ -64,7 +67,16 @@ class DeleteCronTest extends TestCase {
$this->attachmentService = $this->createMock(AttachmentService::class);
$this->attachmentMapper = $this->createMock(AttachmentMapper::class);
$this->stackMapper = $this->createMock(StackMapper::class);
$this->deleteCron = new DeleteCron($this->timeFactory, $this->boardMapper, $this->cardMapper, $this->attachmentService, $this->attachmentMapper, $this->stackMapper);
$this->deckShareProvider = $this->createMock(DeckShareProvider::class);
$this->deleteCron = new DeleteCron(
$this->timeFactory,
$this->boardMapper,
$this->cardMapper,
$this->attachmentService,
$this->attachmentMapper,
$this->stackMapper,
$this->deckShareProvider,
);
}
protected function getBoard($id) {