PSR-14 events
Target group: Developers
Have a look into the event dispatcher documentation if you are not familiar with PSR-14 events.
BeforeMatomoApiRequestEvent
This event provides a possibility to adjust the site ID and the authentication token just before making the request to the Matomo API. This may be helpful in a big multi-site installation where you added a configuration independent from a site.
The event
\Brotkrueml\
provides the following methods:
->getId Site () - Returns the site ID.
->setId Site () - Sets the site ID.
->getToken Auth () - Returns the authentication token.
->setToken Auth () - Sets the authentication token.
Example
Dependent on the host name the current backend user is using we change the site ID:
EXT:your_extension/Classes/EventListener/BeforeMatomoApiRequestEventListener.php
<?php
declare(strict_types=1);
namespace YourVendor\YourExtension\EventListener;
use Brotkrueml\MatomoWidgets\Event\BeforeMatomoApiRequestEvent;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use YourVendor\YourExtension\Mapping\MatomoSiteMapper;
#[AsEventListener(
identifier: 'your-extension/before-matomo-api-request',
)]
final readonly class BeforeMatomoApiRequestEventListener
{
public function __construct(
private MatomoSiteMapper $matomoSiteMapper,
) {}
public function __invoke(BeforeMatomoApiRequestEvent $event): void
{
$hostName = $this->getRequest()->getServerParams()['REMOTE_HOST'];
if ($idSiteFromHostName = $this->matomoSiteMapper->getIdSiteFromHostName($hostName)) {
$event->setIdSite($idSiteFromHostName);
}
}
private function getRequest(): ServerRequestInterface
{
return $GLOBALS['TYPO3_REQUEST'];
}
}