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'

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);
    }
}

API

class 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

Return type

array

Returns

list<array{field: string, label: string, content: string}>

setVersionDifferences(array $versionDifferences)

Modifies the version differences data

Parameters
  • $versionDifferences (array) -- the versionDifferences

getLiveRecordData()

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

Return type

array

Returns

list<array{field: string, label: string, content: string}>

getParameters()

Returns meta information like current stage and current workspace

Return type

stdClass