Feature: #105827 - New PSR-14 ModifyConstraintsForLiveSearchEvent 

See forge#105827, forge#105833, forge#93494

Description 

A new PSR-14 event \TYPO3\CMS\Backend\Search\Event\ModifyConstraintsForLiveSearchEvent has been added to TYPO3 Core. This event is dispatched in the \LiveSearch class and allows extensions to modify the CompositeExpression constraints collected in an array before execution.

This makes it possible to add additional constraints to the main query constraints, combined with a logical OR. These constraints could not previously be accessed by the existing event ModifyQueryForLiveSearchEvent .

The event provides the following methods:

  • getConstraints(): Returns the current array of query constraints (composite expressions).
  • addConstraint(): Adds a single constraint.
  • addConstraints(): Adds multiple new constraints.
  • getTableName(): Returns the table for which the query is executed (for example, pages or tt_content).
  • getSearchDemand(): Returns the search demand.

Example 

The corresponding event listener class:

<?php

namespace Vendor\MyPackage\Backend\EventListener;

use TYPO3\CMS\Backend\Search\Event\ModifyConstraintsForLiveSearchEvent;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Database\ConnectionPool;

final readonly class PageRecordProviderEnhancedSearch
{
    public function __construct(
        private ConnectionPool $connectionPool,
    ) {}

    #[AsEventListener('my-package/livesearch-enhanced')]
    public function __invoke(
        ModifyConstraintsForLiveSearchEvent $event,
    ): void {
        if ($event->getTableName() !== 'pages') {
            return;
        }

        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
        // Add a constraint so that pages marked with "show_in_all_results=1"
        // will always be shown.
        $constraints[] = $queryBuilder->expr()->eq(
            'show_in_all_results',
            1,
        );

        $event->addConstraints(...$constraints);
    }
}
Copied!

Core itself uses this event to allow searching for frontend URIs in the backend page tree.

Impact 

A new PSR-14 event is now available for adding constraints to the live search query. These constraints are combined with a logical OR.