skjnldsv
855a6a7fce
fix(config): add null coalescing fallback in getValueBool before strtolower
...
Followup to #59646 : guard against null reaching strtolower() in both
AppConfig and UserConfig getValueBool(). Also aligns AppConfig with the
(string) cast added in UserConfig by the original PR.
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2026-05-26 07:32:51 +00:00
John Molakvoæ
839c9fbcdb
Merge pull request #60532 from nextcloud/backport/59646/stable32
...
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 (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, 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
[stable32] fix(UserConfig): cast getTypedValue() result to string in getValueBool()
2026-05-26 09:32:38 +02:00
Carl Schwan
f3ca2a688f
Merge pull request #60630 from nextcloud/backport/60225/stable32
...
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 (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, 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) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
[stable32] perf: remove unneeded sort in getFolderContentsById
2026-05-22 12:11:16 +02:00
Robin Appelman
8ed7aeb395
test: adjust tests to unsorted folder listing
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-20 17:56:12 +00:00
Anna Larch
638b2c20c6
fix(theming): fix broken custom images introduced by #58224
...
PR #58224 introduced a raster→SVG conversion path in ImageManager::getImage()
that breaks display of custom theming images. The root cause is a three-part
bug chain:
1. getImage() attempted to convert raster images (PNG/JPEG) to SVG format,
which Imagick cannot do meaningfully and produces broken output.
2. getMimeType() returns 'application/octet-stream' for extensionless stored
files, so the Content-Type response header was wrong.
3. Stale .svg cache files persisted after image replacement, causing
subsequent requests to serve the wrong format.
Fix by:
- Restricting the Imagick conversion to SVG→PNG only (not raster→SVG)
- Reading the stored MIME type from IAppConfig for extensionless files in
ThemingController::getImage()
- Deleting .svg cache files in ImageManager::delete()
- Injecting IAppConfig into ImageManager and reading the cachebuster via
IAppConfig::getAppValueInt() so the URL returned after upload always
carries the freshly-incremented value (IConfig::getAppValue() can return
a stale cached value within the same request)
- Updating the FileInputField Vue component to use a reactive cacheKey ref
that increments on every upload, so the thumbnail refreshes even when the
MIME type of the new image is the same as the old one
- Updating unit tests for ImageManager and ThemingController
- Updating psalm baseline for stable32
Backport of #60198
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-05-20 15:50:07 +00:00
There Is No TIme
476da53d44
fix(UserConfig): cast getTypedValue() result to string in getValueBool()
...
PHP 8.4 made passing non-strings to strtolower() a fatal TypeError.
getTypedValue() can return a non-string under certain conditions, causing
the strtolower() call to throw. The (string) cast guards against this.
Signed-off-by: There Is No TIme <37583483+thereisnotime@users.noreply.github.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-05-19 12:40:34 +00:00
nextcloud-command
40e94df105
fix(security): Update CA certificate bundle
...
Signed-off-by: GitHub <noreply@github.com>
2026-05-17 03:19:08 +00:00
Hendrik Leidinger
3184dfea44
fix: weird bug introduced by psalm
...
Signed-off-by: Hendrik Leidinger <hendrik.leidinger@nextcloud.com>
2026-05-12 12:11:27 +02:00
Hendrik Leidinger
33818517c8
chore: update psalm baseline
...
Signed-off-by: Hendrik Leidinger <hendrik.leidinger@nextcloud.com>
2026-05-12 12:11:27 +02:00
Daniel Calviño Sánchez
29f78e2cec
Merge pull request #59956 from nextcloud/fix-reenabling-system-address-book-in-stable32
...
[stable32] Fix reenabling system address book
2026-05-05 11:53:25 +02:00
Hamza
143fede8e3
test(integration): write integration tests for calendar delegation
...
Signed-off-by: Hamza <hamzamahjoubi221@gmail.com>
2026-04-28 11:50:49 +00:00
Daniel Calviño Sánchez
b26329e0d4
fix: Fix re-enabling the system address book
...
When "system_addressbook_exposed" is set through the administration
settings it is set as a boolean value in IAppConfig which, in the end,
stores it as "0" or "1". However, when read from IConfig in
UserAddressBooks it was strictly compared against "yes", so even if
explicitly enabled the comparison always failed and the system address
book was always seen as disabled. To solve that now the comparison is
made against a boolean value in IAppConfig, which is also consistent
with other places where the value is got (like ContactsManager).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2026-04-28 11:14:25 +02:00
Daniel Calviño Sánchez
b3bcd49a6c
refactor: Replace OC::$server->getL10N by Util::getL10N
...
This makes the code more consistent with stable33 and later.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2026-04-28 11:13:03 +02:00
Benjamin Gaussorgues
223815a6ee
Merge pull request #59762 from nextcloud/backport/59693/stable32
2026-04-23 17:16:36 +02:00
Ferdinand Thiessen
bfff4fbc3f
fix(dav): do not list intermediate upload folders
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-22 15:48:45 +00:00
Robin Appelman
e901393238
test: add test for link reshares with more permissions being redacted
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-21 15:57:48 +00:00
Hamza
d6f4de3651
test(integration): add proper cleanup for caldav scenarios
...
Signed-off-by: Hamza <hamzamahjoubi221@gmail.com>
2026-04-21 07:59:28 +00:00
Hamza
2e9bf5fb43
test(integration): add tests for calendar delegation
...
Signed-off-by: Hamza <hamzamahjoubi221@gmail.com>
2026-04-21 07:59:28 +00:00
Joas Schilling
8f0f2e7fec
test(integration): Add integration test for accept share
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-14 18:47:24 +00:00
Joas Schilling
05a9bedc93
test: Add integration test to confirm a user can not add themselves to another group
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-13 13:14:21 +00:00
Joas Schilling
e5ae38a6fc
ci(psalm): Update baseline
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-09 16:31:15 +02:00
Louis
09a464dfd0
Merge pull request #59084 from nextcloud/backport/59057/stable32
...
[stable32] fix: Move hasAnnotationOrAttribute to the reflector
2026-03-20 12:30:58 +01:00
Louis Chmn
c0787d0baa
chore: Update psalm baseline
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-03-20 11:35:09 +01:00
nextcloud-command
931c0b8372
fix(security): Update CA certificate bundle
...
Signed-off-by: GitHub <noreply@github.com>
2026-03-20 03:07:37 +00:00
Arthur Schiwon
15cfc933e0
Merge pull request #59034 from nextcloud/backport/59025/stable32
...
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 (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, 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
[stable32] fix(LDAP): use displayname from DB, before reaching out to LDAP
2026-03-18 21:20:35 +01:00
Arthur Schiwon
adc98fac7a
ci: update psalm baseline
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 18:23:35 +01:00
Ferdinand Thiessen
fcc7b4d21b
chore: adjust style imports of password confirmation library
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-03-18 14:39:03 +01:00
Ferdinand Thiessen
ca1cf76c0f
fix(files_sharing): make legacy downloadShare endpoint compatible with legacy behavior
...
This needs to be able to directly download files if specified to only
download a single file and not a folder.
Also it was possible to either pass a files array json encoded or a
single file not encoded at all.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-20 18:21:34 +00:00
Ferdinand Thiessen
0c8b04e141
fix(cache): filter out invalid entries in OC\Files\Cache\Wrapper\CacheWrapper::getFolderContentsById
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:30:19 +00:00
provokateurin
5a08b835de
feat(UserPlugin): Also full match on additional email addresses
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-01-21 16:02:03 +01:00
provokateurin
ff937ae5dd
test(UserPlugin): Cover full match email with sharee enumeration limited to group
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-01-21 16:02:03 +01:00
provokateurin
7c6dbf5c84
fix(UserPlugin): Rewrite from scratch
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-01-21 16:02:02 +01:00
provokateurin
663e6f7828
test(UserPlugin): Rewrite unit tests as integration tests
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-01-21 15:58:34 +01:00
provokateurin
a72fa1e4e2
test(ShareesContext): Reset all shareapi related system configs
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-01-21 15:58:13 +01:00
Côme Chilliet
61b1a5f6b8
chore: While at it use strict array search in build/integration
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-18 18:45:07 +01:00
Daniel Calviño Sánchez
bb2ae56457
fix: Unify handling of exclude groups in contacts menu and sharing
...
If the current user belongs to both one or more groups excluded from
sharing and one or more groups not excluded from sharing the user is
allowed to share. However, in the contacts menu, as soon as the current
user belonged to a group excluded from sharing the user could not search
for local contacts. This has been unified now with the sharing
behaviour, so local contacts can still be searched if the user also
belongs to a group not excluded from sharing (or to no group at all,
which was also allowed before).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2026-01-07 17:05:52 +00:00
Daniel Calviño Sánchez
dc03d54c4c
test: Add integration tests for excluded groups in contacts and sharees
...
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2026-01-07 17:05:51 +00:00
Robin Appelman
2b1cfa5edf
test: update cross-share move tests
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-06 13:24:52 +00:00
github-actions[bot]
3cdddf8730
Merge pull request #56880 from nextcloud/dependabot/composer/build/integration/stable32/phpunit/phpunit-9.6.30
...
[stable32] build(deps-dev): bump phpunit/phpunit from 9.6.29 to 9.6.30 in /build/integration
2025-12-22 00:03:39 +00:00
Kate
9fe7e1cb5c
Merge pull request #57085 from nextcloud/backport/56921/stable32
2025-12-18 16:45:55 +01:00
Côme Chilliet
dcdb53634e
feat(log): Add script name and occ command to log details
...
This will help when troubleshooting issues. For web request we have
method and url, but for cron and occ currently we have no way to know if
it’s one or the other and which command.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-15 16:57:16 +01:00
Daniel Calviño Sánchez
709a74a2ac
fix: Fix caching routes by users with an active session
...
When a user has an active session only the apps that are enabled for the
user are initially loaded. In order to cache the routes the routes for
all apps are loaded, but routes defined in routes.php are taken into
account only if the app was already loaded. Therefore, when the routes
were cached in a request by a user with an active session only the
routes for apps enabled for that user were cached, and those routes were
used by any other user, independently of which apps they had access to.
To solve that now all the enabled apps are explicitly loaded before
caching the routes.
Note that this did not affect routes defined using annotations on the
controller files; in that case the loaded routes do not depend on the
previously loaded apps, as it explicitly checks all the enabled apps.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-15 09:53:32 +00:00
Daniel Calviño Sánchez
0c9488b8f0
test: Fix recording app state when admin is not the current user
...
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-15 09:53:32 +00:00
SebastianKrupinski
157d64e97b
fix: calendar subscription memory exhaustion
...
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-12-11 12:32:39 -05:00
dependabot[bot]
c5e8f22494
build(deps-dev): bump phpunit/phpunit in /build/integration
...
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit ) from 9.6.29 to 9.6.30.
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases )
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.30/ChangeLog-9.6.md )
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.29...9.6.30 )
---
updated-dependencies:
- dependency-name: phpunit/phpunit
dependency-version: 9.6.30
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-06 02:09:55 +00:00
Salvatore Martire
7ede3044bf
refactor: extract tree initialization logic
...
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-03 15:38:27 +00:00
nextcloud-command
38b7641860
fix(security): Update CA certificate bundle
...
Signed-off-by: GitHub <noreply@github.com>
2025-12-03 02:40:55 +00:00
Git'Fellow
4d363eea40
Merge pull request #55804 from nextcloud/backport/55800/stable32
...
[stable32] Fix chunked upload for file drop shares
2025-12-02 09:49:48 +01:00
skjnldsv
9674191ba6
chore(files_reminder): add integration tests
...
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-11-26 09:49:28 +01:00
provokateurin
b737336e4d
fix(FilesDropPlugin): Ensure all request for file request have a nickname
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-11-18 15:19:46 +01:00