Commit graph

78 commits

Author SHA1 Message Date
Carl Schwan
ae73f7aaf5
refactor(setup-manager): Use ISetupManager instead of SetupManager
Keep using the OC API in the mount manager and OC_Utils, but the rest is
now using the public API.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-27 15:19:19 +01:00
Carl Schwan
0fe01de26c
feat(OCP): Expose setup manager to OCP
It's used by a lot of apps so expose just the two methods that are most
of the time used, to prevent the apps to relly on private APIs.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-26 17:12:02 +01:00
Louis Chmn
7c9c74f4f0 feat(files_sharing): Implement partial mount providers
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-01-16 08:32:14 +01:00
Benjamin Gaussorgues
0ff8b35578
Merge pull request #57550 from nextcloud/setup-path-not-found-fallback
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
2026-01-15 16:12:23 +01:00
Robin Appelman
53b160ce9b fix: add some extra checks for getMountsForPath arguments
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-15 11:31:54 +01:00
Robin Appelman
68cdd1b1ef fix: fallback to full user setup if we cant find the expected mount root
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 18:04:13 +01:00
Andy Scherzinger
abe5499e14
Merge pull request #57498 from nextcloud/carl/rename-imountproviderargs
refactor(files): Rename IMountProviderArgs
2026-01-14 17:50:43 +01:00
Robin Appelman
47530ef95f feat: add a debug config option to disable authoritative mount optimizations
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 13:03:01 +01:00
Robin Appelman
e5497c7731 fix: protect against infinite loops in setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 11:21:27 +01:00
Robin Appelman
467487ecd8 feat: dont reload authoritative mount providers when doing by-path setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 16:42:48 +01:00
Carl Schwan
7b05c8f797
refactor(files): Rename IMountProviderArgs
It's not an interface so the I-prefix is inadequate.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-12 17:33:52 +01:00
Salvatore Martire
2d22c4f654 fix: update information cached by mount point on rename
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
Salvatore Martire
07eef5eaf4 fix: drop set up partial mounts on setupForUser
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
Salvatore Martire
6e9ba894a2 fix: add $forChildren parameter to IPartialMountProvider
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-29 18:06:12 +01:00
Salvatore Martire
6c19fbcf4d fix: adjust authoritative setup path caching logic
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-22 15:52:52 +01:00
Salvatore Martire
d14a032220 feat: implement support for authoritative mount providers
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Salvatore Martire
9b519b4679 refactor: simplify code
replace array_reduce + array_merge with array_merge(...)
replace conditional assignment with ??=

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Salvatore Martire
f47a586cdd docs: update comments
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Robin Appelman
73d0418425
fix: don't update cached mountpoints if the request doesn't have filesystem access
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-07-31 18:28:26 +02:00
Côme Chilliet
7127ac4b43
fix: Replace OC_App::loadApp calls by IAppManager
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-07-10 11:40:27 +02:00
Ferdinand Thiessen
5981b7eb51
chore: apply new CSFixer rules
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

# Conflicts:
#	apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +02:00
Ferdinand Thiessen
e143921896
feat(IUser): add getQuotaBytes method to get machine readable quota
Proper replacement for deprecated `OC_Util::getUserQuota`.
Also we still use this in some cases we can now replace, moreover it
just makes sense to have a machine readable format in the API instead of
only the human readable format which is less precise.
Alings also with `getQuota` of the quota storage, which already returned
the machine readable format.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-22 12:50:38 +02:00
provokateurin
ecfa58d3d7
fix(SetupManager): Include home and root providers when registering mounts
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-20 09:46:53 +02:00
Robin Appelman
b2c01785ae
fix: fix availability wrapper not applying
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-11-26 17:44:58 +01:00
Carl Schwan
77821f8f3e
feat(trashbin): Port files trashbin events to IEventDispatcher/IEventListener
oc_hooks is deprecated and will at some point be removed

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-09-23 18:13:21 +02:00
provokateurin
9836e9b164
chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00
Daniel Kesselberg
af6de04e9e
style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
Robin Appelman
1071201052
feat: store the mountpoint of storages in the mount options
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 13:31:35 +02:00
Andy Scherzinger
dae7c159f7
chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-24 13:11:22 +02:00
Joas Schilling
951c330d39
Revert "don't perform an explicit setup when using the file cache" 2024-03-07 14:38:02 +01:00
Robin Appelman
4fba4cd14c fix: fix user folder init
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 17:52:24 +01:00
Robin Appelman
af466a0d3a fix: ensure user home mounts is registered
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 17:52:24 +01:00
Robin Appelman
ac7f3ee985 add a debug option to force a full filesystem setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-02-24 11:55:20 +01:00
Robin Appelman
dec880b285
optimize builtin storage wrappers
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-11-08 15:26:10 +01:00
Robin Appelman
1eb3293e53
setup filesystem wrappers before we mark the root as setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-09-12 16:50:29 +02:00
Robin Appelman
64f62f7cfd
Merge pull request #39863 from nextcloud/sharing-mask-wrapper
move share permission logic to storage wrapper
2023-09-04 14:05:14 +02:00
Robin Appelman
b6c3507aa0 only determine quota_include_external_storage once for quota wrapper
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-08-18 14:25:28 +02:00
Robin Appelman
e73889a240 cleanup di for share permissions wrapper
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-08-16 15:25:05 +02:00
Robin Appelman
a031bc4788 more share permission logic to storage wrapper
this way we only have to determine the share permissions once

Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-08-14 18:17:27 +02:00
Faraz Samapoor
e7cc7653b8 Refactors "strpos" calls in lib/private to improve code readability.
Signed-off-by: Faraz Samapoor <fsamapoor@gmail.com>
2023-05-15 15:17:19 +03:30
Robin Appelman
fb1095f0f6
do onetime user setup before getting any mount from providers
this fixes a race condition where wrappers weren't properly applied if when a mount provider creates the storage instance one mountpoint creation instead of lazily

Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-02-22 18:03:38 +01:00
Robin Appelman
91d5f6a826 more filesystem setup performance instrumentation
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-02-10 11:11:13 +01:00
Côme Chilliet
f5c361cf44
composer run cs:fix
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-01-20 11:45:08 +01:00
Robin Appelman
841a6a084e
delay updating setup providers untill we register the mounts
otherwise the fallback to a full setup for a missing cached mount provider will lead to a race condition

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-17 15:21:57 +01:00
Robin Appelman
bd91c56539
get quota for user only when needed
always apply the wrapper but have the wrapper get the quota lazily only when an operation where quota is applied is performed

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-09-01 19:32:24 +02:00
Robin Appelman
13eef55a92
always triger setup of builtin storage wrappers
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-07-21 16:36:32 +02:00
Jonas
74e9ef0fb1
Fix listening for circle events in SetupManager
So far, SetupManager listened for deprecated events that are no longer
triggered. Instead, use the circle events that actually get triggered
when adding or removing a circle or circle member. Also, these events
get triggered on each instance of a globalscale setup.

Fixes: #33210

Signed-off-by: Jonas <jonas@freesources.org>
2022-07-12 13:28:21 +01:00
Vincent Petry
56b1453945
Merge pull request #32768 from nextcloud/fs-setup-onetime-earlier
perform onetime setup earlier to ensure wrappers are registered on time
2022-06-10 11:21:54 +02:00
Robin Appelman
5c768f980e
fix mounts mounted at the users home
this fixes external storages with '/' as mountpoint

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-06-09 19:21:56 +02:00
Robin Appelman
a937ab03dd
perform onetime setup earlier to ensure wrappers are registered on time
this fixes an issue with wrappers like encryption not always being applied to mountpoint that create the storage object directly (such as external storage)

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-06-08 18:49:54 +02:00