Skip to content

TYPO3 v14.3 compatibility - #255

Open
jloderhose wants to merge 7 commits into
georgringer:core-v14from
jloderhose:core-v14
Open

TYPO3 v14.3 compatibility#255
jloderhose wants to merge 7 commits into
georgringer:core-v14from
jloderhose:core-v14

Conversation

@jloderhose

Copy link
Copy Markdown

Hi,

thank you for providing this helpful extension.

I installed branch core-v14 in TYPO3 14.3 and managed to make it usable with a few changes to the code. The extension now loads and runs on TYPO3 14.3 while keeping 13.4 support.

Maybe you can use (parts of) the result to build an updated release.

Thanks again, and best regards

The module declared `access => 'user,group'`, a leftover from the pre-v12
`addModule()` API. Since v14 ModuleProvider resolves the access value
against a registry of ModuleAccessGate identifiers (`admin`, `user`,
`systemMaintainer`) and returns false when none matches, hiding the module
from every user including admins.
StandaloneView was removed in v14 (Breaking-105377). Notification mails now
render through ViewFactoryInterface, introduced in v13.3 (Feature-104773),
so the extension keeps working on both v13.4 and v14.

The factory is resolved via GeneralUtility::makeInstance() rather than
constructor injection, mirroring how the core itself does it in FluidEmail.
EmailNotification is created via makeInstance() in three places, and that
only consults the container for public services -- a constructor dependency
would have broken those call sites.
The guard compared the raw database value strictly against an integer.
The database returns '1' as a string, so `'1' !== 1` was always true and
clients marked as excluded were imported anyway on every save.
getExtDetails() returns an empty array when no matching extension record
exists, but the caller accessed its keys unconditionally. Under
declare(strict_types=1) this also passed the database's string values into
getCompatibility(), which expects integers.

Missing details now fall back to 0 and getCompatibility() reports the
version as unknown, instead of dropping the update or raising a TypeError.
A key missing from the extension configuration raised a warning and, for
the typed string properties, a TypeError. Every value now falls back to the
property default, which matches the defaults in ext_conf_template.txt.
Extbase dropped annotation parsing in v14 (Breaking-107229), so the two
docblocks in ClientController still apply on v13.4 but not on v14. Nothing
changes in practice: the NotEmpty validated Client properties are required
in TCA anyway.

Array configuration at method level is deliberate. The alternatives exist
only as of v14 and would break v13.4.
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