ModifyVersionDifferencesEvent

New in version 12.0

This PSR-14 event replaces the $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['workspaces']['modifyDifferenceArray'] hook.

The PSR-14 event \TYPO3\CMS\Workspaces\Event\ModifyVersionDifferencesEvent can be used to modify the version differences data, used for the display in the Web > Workspaces backend module. Those data can be accessed with the getVersionDifferences() method and updated using the setVersionDifferences(array $versionDifferences) method.

Example

Registration of the event listener in the extension's Services.yaml:

EXT:my_extension/Configuration/Services.yaml
services:
  # Place here the default dependency injection configuration

  MyVendor\MyExtension\Workspaces\EventListener\MyEventListener:
    tags:
      - name: event.listener
        identifier: 'my-extension/modify-version-differences'
Copied!

Read how to configure dependency injection in extensions.

The corresponding event listener class:

EXT:my_extension/Classes/Workspaces/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Workspaces\EventListener;

use TYPO3\CMS\Core\Utility\DiffUtility;
use TYPO3\CMS\Workspaces\Event\ModifyVersionDifferencesEvent;

final class MyEventListener
{
    public function __construct(private readonly DiffUtility $diffUtility)
    {
        $this->diffUtility->stripTags = false;
    }

    public function __invoke(ModifyVersionDifferencesEvent $event): void
    {
        $differences = $event->getVersionDifferences();
        foreach ($differences as $key => $difference) {
            if ($difference['field'] === 'my_test_field') {
                $differences[$key]['content'] = $this->diffUtility->makeDiffDisplay('a', 'b');
            }
        }

        $event->setVersionDifferences($differences);
    }
}
Copied!

API

class ModifyVersionDifferencesEvent
Fully qualified name
\TYPO3\CMS\Workspaces\Event\ModifyVersionDifferencesEvent

Listeners to this event will be able to modify the differences of versioned records

getVersionDifferences ( )

Get the version differences.

This array contains the differences of each field with the following keys:

  • field: The corresponding field name
  • label: The corresponding field label
  • content: The field values difference
Returns
list<array{field: string, label: string, content: string}>
setVersionDifferences ( array $versionDifferences)

Modifies the version differences data

param $versionDifferences

the versionDifferences

getLiveRecordData ( )

Returns the records live data (used to create the version difference)

Returns
list<array{field: string, label: string, content: string}>
getParameters ( )

Returns meta information like current stage and current workspace

Returns
stdClass