Releases 14.0 

Release 14.0.0 

This is a new major release for TYPO3 14 LTS.

New in this release 

Breaking Changes 

Unified Site Hash Strategy 

Introduced in solr v13.1, and now implemented as default, the site hash strategy is now based on the site identifier and not on the domain anymore, making the site hash calculation more robust across sites with multiple domains.

The extension configuration setting: siteHashStrategy has been removed without substitution.

The PSR-14 event AfterDomainHasBeenDeterminedForSiteEvent has been removed, as it has been superseded by AfterSiteHashHasBeenDeterminedForSiteEvent.

If you upgrade from < 13.1, it is recommended to re-index all solr cores completely.

!!! DataUpdateHandler::removeFromIndexAndQueueWhenItemInQueue() removed 

The deprecated method DataUpdateHandler::removeFromIndexAndQueueWhenItemInQueue(string $recordTable, int $recordUid): void has been removed. Use DataUpdateHandler::removeFromIndexAndQueue() directly instead.

Impact 

Code overriding removeFromIndexAndQueueWhenItemInQueue() or calling it from a subclass

Replace every call to removeFromIndexAndQueueWhenItemInQueue() with a direct call to removeFromIndexAndQueue().

The queue-containment check that was part of the old method is not needed: removeFromIndexAndQueue() / GarbageHandler::collectGarbage() handle that case gracefully.

!!! PageIndexer::isPageIndexable() removed 

The deprecated method PageIndexer::isPageIndexable(Item $item): bool has been removed. Use PageIndexer::isPageEnabled(array $record): bool instead.

Impact 

Code overriding isPageIndexable() in a custom PageIndexer subclass

Rename method isPageIndexable to isPageEnabled() and adjust the signature to accept an array (the page record) instead of an Item object:

!!! RecordUpdatedEvent no longer covers record insertions – use RecordInsertedEvent 

A dedicated RecordInsertedEvent has been introduced for record creations. The RecordUpdatedEvent now only fires for updates; the deprecated $isNewRecord property, its constructor parameter, and the isNewRecord() method have been removed from RecordUpdatedEvent.

Previously RecordUpdatedEvent was dispatched for both new records and updates, with isNewRecord() acting as a flag to distinguish the two cases. In v14 these are two distinct events.

Impact 

Listeners checking $event->isNewRecord()

Register your listener for RecordInsertedEvent to handle creations, and for RecordUpdatedEvent to handle updates. Remove any isNewRecord() checks:

# Before – one listener covering both cases
tags:
  - name: event.listener
    event: ApacheSolrForTypo3\Solr\Domain\Index\Queue\UpdateHandler\Events\RecordUpdatedEvent

# After – separate registrations
tags:
  - name: event.listener
    event: ApacheSolrForTypo3\Solr\Domain\Index\Queue\UpdateHandler\Events\RecordInsertedEvent
  - name: event.listener
    event: ApacheSolrForTypo3\Solr\Domain\Index\Queue\UpdateHandler\Events\RecordUpdatedEvent
Copied!

Code instantiating new RecordUpdatedEvent(..., isNewRecord: true)

Replace with new RecordInsertedEvent($uid, $table, $fields).

All Changes 

Contributors 

Like always this release would not have been possible without the help from our awesome community. Here are the contributors to this release.

(patches, comments, bug reports, reviews, ... in alphabetical order)

Also a big thank you to our partners who have already concluded one of our new development participation packages such as Apache Solr EB for TYPO3 14 LTS (Feature).

How to Get Involved 

There are many ways to get involved with Apache Solr for TYPO3:

  • Submit bug reports and feature requests on GitHub
  • Ask or help or answer questions in our Slack channel
  • Provide patches through Pull Request or review and comment on existing Pull Requests
  • Go to www.typo3-solr.com or call dkd to sponsor the ongoing development of Apache Solr for TYPO3

Support us by becoming an EB partner:

https://shop.dkd.de/Produkte/Apache-Solr-fuer-TYPO3/

or call:

+49 (0)69 - 2475218 0