Skip to content

feat: support Nextcloud 34, drop Nextcloud 31 - #34

Open
eluttine wants to merge 1 commit into
mainfrom
feat/nc34-support
Open

eluttine wants to merge 1 commit into
mainfrom
feat/nc34-support

Conversation

@eluttine

@eluttine eluttine commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

Moves the supported range from 31–33 to 32–34 and bumps the app to 1.1.0.

What changes

  • appinfo/info.xml: min-version="32" max-version="34", version 1.1.0.
  • CI: the PHPUnit matrix (MySQL / PgSQL / SQLite) drops stable31 and adds stable34 on PHP 8.3.
  • nextcloud/ocp is pinned to dev-stable32. The pin tracks the oldest supported version, so Psalm still catches calls to APIs newer than the floor.
  • README / AGENTS / DEVELOPMENT updated to the new range. The PHP floor stays at 8.1, because NC 32 still accepts it.

No PHP code changes. The NC 33 → 34 diff for everything we hook into is attributes and refactors only:

  • GroupInterface, ISearchPlugin / collaborator search, Group::inGroup() aggregation
  • the user_ldap Access / proxy methods LdapSync calls
  • DAV sharing

The one real NC 34 change: where the share check lives

From 34.0.2 the "Sharing is only allowed within your own groups" check is no longer in Share20\Manager::groupCreateChecks(). It moved to core's RestrictInteractionListener, which generalChecks() reaches via a RestrictInteractionEvent. It still asks IGroup::inGroup(), so the virtual-membership backend works unchanged.

The listener runs for the share owner as well as the sharer whenever the owner is known and differs:

  • Create checks the sharer only, because createShare() runs generalChecks() before it sets the owner.
  • Update checks the owner too. A teacher can reshare a colleague's file to a class at their own school, but if the colleague doesn't teach at that school, later edits of that share (note, permissions, expiry) get a 403.

The app can't change this without answering YES for a non-teacher, which would break the school boundary. It's documented in SHARING-INTERNALS.md and the AGENTS.md diagram.

Testing

  • PHPUnit 56/56 on NC 32.0.15 (PHP 8.2) and NC 34.0.5 (PHP 8.3); Psalm clean against the dev-stable32 stubs.
  • End to end on a fresh NC 34.0.5 with the dev/ldap seed, over the OCS API as the five seed accounts:
    • picker matrix for all five users
    • 10 direct group shares, each allowed or refused as expected
    • user shares and reshares
    • share updates, including the owner-check refusal above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant