Skip to content

[!!!][TASK] 2.0 – Drop legacy layer, require TYPO3 v13/v14#53

Open
davidsteeb wants to merge 3 commits into
mainfrom
BEXT-596-cleanup-v13-v14
Open

[!!!][TASK] 2.0 – Drop legacy layer, require TYPO3 v13/v14#53
davidsteeb wants to merge 3 commits into
mainfrom
BEXT-596-cleanup-v13-v14

Conversation

@davidsteeb

Copy link
Copy Markdown
Contributor

Cleanup release 2.0: raise the minimum to TYPO3 v13.4 / v14 and PHP 8.2, and remove the v10/v11/v12 compatibility layer. The ViewHelpers stay (no core replacement).

⚠️ Breaking: drops support for TYPO3 v10/v11/v12 and PHP < 8.2.

Removed

  • Classes/Hooks/BackendPreviewRenderer.php (PageLayoutViewDrawItemHookInterface, gone since v12) incl. its SC_OPTIONS registration and public: true in Services.yaml
  • ext_tables.php (only registered the < v12 backend skin)
  • Classes/Listener/BootCompleted.php – registered unused Fontawesome icons (templates use the core icons actions-exclamation-*-alt)
  • Build/phpstan12.neon + phpstan-baseline12.neon, and '12' from the CI matrix

Simplified

  • ext_localconf.php → just the (now unconditional) stylesheet registration
  • ContentPreview: renders via ViewFactoryInterface on both paths (RecordInterface/v14 and array/v13) → StandaloneView (removed in v14) is gone, shared createView() helper
  • DatabaseRowService: removed the pre-v12 manual file-field fallback (!$foundOne)
  • GetDatabaseRecordViewHelper: removed the v12 QueryBuilder::add() branch

Constraints

  • PHP ^8.2, TYPO3 ^13.4 || ^14.3, version 2.0.0 (composer.json + ext_emconf.php)

Quality

  • PHPStan baselines regenerated against real v13.4.31 and v14.3.3: v14 from 12 → 3 entries, v13 also 3 (same set — only the unavoidable v13↔v14 Record-API differences)
  • PHPStan v13 + v14 green, php-cs-fixer green, CI matrix now v13/v14
  • PartialsLegacy kept (still used on v13 via [typo3.version < 14] in page.tsconfig)

Relates BEXT-596.

BREAKING: drops support for TYPO3 v10, v11 and v12 (and PHP < 8.2).

- Remove legacy PageLayoutView hook (BackendPreviewRenderer) and its
  registration; v12+ always uses the previewRenderer.
- Remove ext_tables.php (only registered the < v12 backend skin).
- Reduce ext_localconf.php to the (now unconditional) stylesheet entry.
- Remove BootCompleted listener (registered unused Fontawesome icons).
- ContentPreview: render previews via ViewFactoryInterface on both the
  RecordInterface (v14) and the array (v13) path, dropping StandaloneView.
- DatabaseRowService: drop the pre-v12 manual file-field fallback.
- GetDatabaseRecordViewHelper: drop the v12 QueryBuilder::add() branch.
- CI/PHPStan: drop the v12 matrix entry, config and baseline; regenerate
  the v14 baseline (12 -> 3 entries).
- Bump constraints: PHP ^8.2, TYPO3 ^13.4 || ^14.3, version 2.0.0.

Relates: BEXT-596
@davidsteeb davidsteeb requested review from achimfritz and bmack and removed request for achimfritz June 11, 2026 15:02
@davidsteeb davidsteeb self-assigned this Jun 11, 2026
The previous regeneration ran against a broken local v13 vendor state
(mixed v13/v14), producing v14-style entries. Restore the actual v13
errors reported by CI (instanceof-always-false + checkRecordEditAccess),
which differ from the v14 baseline.

Relates: BEXT-596
@davidsteeb davidsteeb requested a review from achimfritz June 11, 2026 15:14

@achimfritz achimfritz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

$row['allImages-visible'] = $this->countVisibleFileReferences($row['allImages']);
if ($row[$fieldName] ?? false) {
$row['all' . $variableName] = $this->fileRepository->findByRelation('tt_content', $fieldName, $row['uid']);
$row['all' . $variableName . '-visible'] = $this->countVisibleFileReferences($row['all' . $variableName]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extendRow is only called for v13 (because in v14 we have the Record Object).

I would suggest to drop die "-visible" variables, because they are also not available in v14

if ($row[$fieldName] ?? false) {
$row['all' . $variableName] = $this->fileRepository->findByRelation('tt_content', $fieldName, $row['uid']);
$row['all' . $variableName . '-visible'] = $this->countVisibleFileReferences($row['all' . $variableName]);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(maybe we can even do more cleanups in this Method, to become similar to v14)

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.

2 participants