Feature: #106363 - PSR-14 event for modifying URLs in redirects:checkintegrity
See forge#106363
Description
A new PSR-14 event
\TYPO3\
has been introduced. It allows extensions to register event listeners to modify
the list of URLs processed by the CLI command
redirects:checkintegrity.
Example
The following example shows an event listener that uses the PHP attribute
# to register itself and adds the URLs found in a site's
XML sitemap to the list of URLs checked by the redirects integrity command.
EXT:my_extension/Classes/EventListener/MyEventListener.php
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Redirects\Event\AfterPageUrlsForSiteForRedirectIntegrityHaveBeenCollectedEvent;
final readonly class MyEventListener
{
public function __construct(
private RequestFactory $requestFactory,
) {}
#[AsEventListener]
public function __invoke(AfterPageUrlsForSiteForRedirectIntegrityHaveBeenCollectedEvent $event): void
{
$pageUrls = $event->getPageUrls();
$additionalOptions = [
'headers' => ['Cache-Control' => 'no-cache'],
'allow_redirects' => false,
];
$site = $event->getSite();
foreach ($site->getLanguages() as $siteLanguage) {
$sitemapIndexUrl = rtrim((string)$siteLanguage->getBase(), '/') . '/sitemap.xml';
$response = $this->requestFactory->request(
$sitemapIndexUrl,
'GET',
$additionalOptions,
);
$sitemapIndex = simplexml_load_string($response->getBody()->getContents());
foreach ($sitemapIndex as $sitemap) {
$sitemapUrl = (string)$sitemap->loc;
$response = $this->requestFactory->request(
$sitemapUrl,
'GET',
$additionalOptions,
);
$sitemap = simplexml_load_string($response->getBody()->getContents());
foreach ($sitemap as $url) {
$pageUrls[] = (string)$url->loc;
}
}
}
$event->setPageUrls($pageUrls);
}
}
Copied!