refactor: code quality via Rector, strict types where safe
rector.php gets the codeQuality set: declare(strict_types=1) in the 85 files where Rector finds no call relying on scalar type juggling (mostly TCA and configuration, models, the content feed API and the import command), "or die" as "|| die", instanceof instead of null checks for object types, early returns and self:: in final classes. Hotel::setRooms() goes instead of getting the property Rector wanted to declare: nothing calls it, and there is no rooms column any more. Checked locally: cache warmup, the ep:* commands load, frontend crawl (~1,900 URLs) and the backchannel APIs render the same as before. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
f4556ee75c
commit
4fe06267c9
114 files changed
+278
-98
No files matched your search
@@ -1,7 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Command;
|
||||
|
||||
use EP\EpProducts\Service\ProductImport;
|
||||
use EP\EpProducts\Service\DateImportService;
|
||||
use EP\EpProducts\Service\ProductImportSource;
|
||||
use Symfony\Component\Console\Attribute\AsCommand;
|
||||
@@ -28,7 +31,7 @@ class DateCommandController extends Command
|
||||
public function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$import = $this->importSource->acquire();
|
||||
if ($import === null) {
|
||||
if (!$import instanceof ProductImport) {
|
||||
$output->writeln('No new import available.');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\ContentFeed;
|
||||
|
||||
use EP\EpProducts\Http\ApiKeyAuthenticator;
|
||||
|
||||
@@ -83,7 +83,7 @@ class UrlResolver
|
||||
{
|
||||
$site = $this->getIncludedSite($pageUid);
|
||||
|
||||
if (null === $site) {
|
||||
if (!$site instanceof Site) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ class UrlResolver
|
||||
$pageUid = $this->parsePageReference($detailPage);
|
||||
$target = null === $pageUid ? null : $this->resolveLinkTarget($pageUid);
|
||||
$site = null === $target ? null : $this->getIncludedSite($target);
|
||||
$url = null === $site ? null : $this->getPageUrl($target);
|
||||
$url = $site instanceof Site ? $this->getPageUrl($target) : null;
|
||||
|
||||
return [
|
||||
'url' => $url,
|
||||
@@ -170,7 +170,7 @@ class UrlResolver
|
||||
{
|
||||
$site = $this->getIncludedSite($storagePid);
|
||||
|
||||
if (null === $site) {
|
||||
if (!$site instanceof Site) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class CityController extends ActionController
|
||||
*/
|
||||
public function detailAction(?City $city = null): ResponseInterface
|
||||
{
|
||||
if (null === $city) {
|
||||
if (!$city instanceof City) {
|
||||
$cityUid = ($this->settings['cityUid'] ?? '');
|
||||
$city = $this->cityRepository->findByIdentifier($cityUid);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class ConceptController extends ActionController
|
||||
*/
|
||||
public function detailAction(?Concept $concept = null): ResponseInterface
|
||||
{
|
||||
if ($concept === null) {
|
||||
if (!$concept instanceof Concept) {
|
||||
$conceptUid = ($this->settings['conceptUid'] ?? '');
|
||||
$concept = $this->conceptRepository->findByIdentifier($conceptUid);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class CountryController extends ActionController
|
||||
*/
|
||||
public function detailAction(?Country $country = null): ResponseInterface
|
||||
{
|
||||
if ($country === null) {
|
||||
if (!$country instanceof Country) {
|
||||
$countryUid = ($this->settings['countryUid'] ?? '');
|
||||
$country = $this->countryRepository->findByIdentifier($countryUid);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class HotelController extends ActionController
|
||||
*/
|
||||
public function detailAction(?Hotel $hotel = null): ResponseInterface
|
||||
{
|
||||
if ($hotel !== null) {
|
||||
if ($hotel instanceof Hotel) {
|
||||
$hotelUid = $hotel->getUid();
|
||||
} else {
|
||||
$hotelUid = ($this->settings['hotelUid'] ?? '');
|
||||
|
||||
@@ -47,7 +47,7 @@ class ProductController extends ActionController
|
||||
$dateTo = null
|
||||
): ResponseInterface {
|
||||
// Get product to display from flexform settings if not provided via url
|
||||
if ($product === null) {
|
||||
if (!$product instanceof Product) {
|
||||
$productUid = ($this->settings['productUid'] ?? null);
|
||||
$product = $productUid ? $this->productRepository->findByIdentifier($productUid) : null;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class RegionController extends ActionController
|
||||
*/
|
||||
public function detailAction(?Region $region = null): ResponseInterface
|
||||
{
|
||||
if ($region === null) {
|
||||
if (!$region instanceof Region) {
|
||||
$regionUid = ($this->settings['regionUid'] ?? '');
|
||||
$region = $this->regionRepository->findByIdentifier($regionUid);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class TeamController extends ActionController
|
||||
*/
|
||||
public function showAction(?Teammember $member = null): ResponseInterface
|
||||
{
|
||||
if ($member === null) {
|
||||
if (!$member instanceof Teammember) {
|
||||
return $this->redirect('list', null, null, null, null, 0, 302);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class TravelinfoController extends ActionController
|
||||
public function travelInfoAction(?Travelinfo $travelInfo = null): ResponseInterface
|
||||
{
|
||||
// the page itself (/reiseinformationen/) without a travel info or code
|
||||
if (null === $travelInfo) {
|
||||
if (!$travelInfo instanceof Travelinfo) {
|
||||
$this->notFound();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -71,4 +73,3 @@ class Badge extends AbstractEntity
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ class City extends AbstractDestination implements TeaserInterface
|
||||
$headerImages = $this->headerImages;
|
||||
|
||||
if ($headerImages->count() === 0 && null !== $this->getRegion()) {
|
||||
$headerImages = $this->getRegion()->getHeaderImages();
|
||||
return $this->getRegion()->getHeaderImages();
|
||||
}
|
||||
|
||||
return $headerImages;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -49,4 +51,4 @@ class Faq extends AbstractEntity
|
||||
$this->answer = $answer;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -721,7 +721,7 @@ class Hotel extends AbstractEntity implements TeaserInterface
|
||||
$headerImages = $this->headerImages;
|
||||
|
||||
if ($headerImages->count() === 0 && null !== $this->getCity()) {
|
||||
$headerImages = $this->getCity()->getHeaderImages();
|
||||
return $this->getCity()->getHeaderImages();
|
||||
}
|
||||
|
||||
return $headerImages;
|
||||
@@ -920,13 +920,6 @@ class Hotel extends AbstractEntity implements TeaserInterface
|
||||
$this->products = $products;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ObjectStorage $rooms
|
||||
*/
|
||||
public function setRooms($rooms) {
|
||||
$this->rooms = $rooms;
|
||||
}
|
||||
|
||||
public function addFact(Fact $fact)
|
||||
{
|
||||
$this->facts->attach($fact);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -70,4 +72,3 @@ class Infobox extends AbstractEntity
|
||||
$this->defaultText = $defaultText;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -28,4 +30,4 @@ class MatchCode extends AbstractEntity
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
|
||||
@@ -836,7 +836,7 @@ class Product extends AbstractEntity implements TeaserInterface
|
||||
$headerImages = $this->headerImages;
|
||||
|
||||
if ($headerImages->count() === 0 && null !== $this->getRegion()) {
|
||||
$headerImages = $this->getRegion()->getHeaderImages();
|
||||
return $this->getRegion()->getHeaderImages();
|
||||
}
|
||||
|
||||
return $headerImages;
|
||||
|
||||
@@ -265,7 +265,7 @@ class Region extends AbstractDestination implements TeaserInterface
|
||||
$headerImages = $this->headerImages;
|
||||
|
||||
if ($headerImages->count() === 0 && null !== $this->getCountry()) {
|
||||
$headerImages = $this->getCountry()->getHeaderImages();
|
||||
return $this->getCountry()->getHeaderImages();
|
||||
}
|
||||
|
||||
return $headerImages;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
class Room
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -57,4 +59,3 @@ class TravelinfoLink extends AbstractEntity
|
||||
$this->icon = $icon;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
|
||||
@@ -73,4 +75,3 @@ class TravelinfoTeaser extends AbstractEntity
|
||||
$this->image = $image;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
@@ -112,4 +114,3 @@ class Webcam extends AbstractEntity
|
||||
$this->available = $available;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Repository;
|
||||
|
||||
class ConceptRepository extends AbstractRepository
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Repository;
|
||||
|
||||
class CountryRepository extends AbstractRepository
|
||||
|
||||
@@ -152,7 +152,7 @@ class HotelRepository extends AbstractRepository
|
||||
$qb->getConcreteQueryBuilder()->orderBy('FIELD(hotel.type, ' . Hotel::TYPE_SPORTS_CLUB . ') DESC');
|
||||
$qb->addOrderBy('hotel.name', 'ASC');
|
||||
|
||||
if ($excludedHotelUids) {
|
||||
if ($excludedHotelUids !== []) {
|
||||
$qb
|
||||
->andWhere('hotel.uid NOT IN (:excludedHotelUids)')
|
||||
->setParameter('excludedHotelUids', $excludedHotelUids, Connection::PARAM_INT_ARRAY)
|
||||
|
||||
@@ -244,7 +244,7 @@ class ProductRepository extends AbstractRepository
|
||||
);
|
||||
}
|
||||
|
||||
if ($date !== null) {
|
||||
if ($date instanceof Date) {
|
||||
$qb->andWhere($qb->expr()->eq(
|
||||
'date.uid',
|
||||
$qb->createNamedParameter($date->getUid(), Connection::PARAM_INT))
|
||||
|
||||
@@ -31,7 +31,7 @@ class SnowreportRepository extends AbstractRepository
|
||||
->orderBy('region.name')
|
||||
;
|
||||
|
||||
if ($regionUids) {
|
||||
if ($regionUids !== []) {
|
||||
$qb->andWhere($qb->expr()->in(
|
||||
'region.uid',
|
||||
$qb->createNamedParameter($regionUids, Connection::PARAM_INT_ARRAY)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Repository;
|
||||
|
||||
class TravelinfoRepository extends AbstractRepository
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Domain\Serialization;
|
||||
|
||||
class Services
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace EP\EpProducts\EpTeam;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Psr\Log\LoggerAwareInterface;
|
||||
use Psr\Log\LoggerAwareTrait;
|
||||
use Symfony\Component\HttpClient\HttpClient;
|
||||
@@ -135,7 +136,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
}
|
||||
|
||||
if (mb_strlen($body) > self::ERROR_BODY_EXCERPT_LENGTH) {
|
||||
$body = mb_substr($body, 0, self::ERROR_BODY_EXCERPT_LENGTH) . '…';
|
||||
return mb_substr($body, 0, self::ERROR_BODY_EXCERPT_LENGTH) . '…';
|
||||
}
|
||||
|
||||
return $body;
|
||||
@@ -157,7 +158,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $this->logger) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->info('Application form submission accepted by the EP Team API.', [
|
||||
'form' => $payload['form'] ?? null,
|
||||
'pageUid' => $payload['pageUid'] ?? null,
|
||||
@@ -171,8 +172,8 @@ class ApiClient implements LoggerAwareInterface
|
||||
*/
|
||||
private function getHttpClient(): HttpClientInterface
|
||||
{
|
||||
if (null !== static::$httpClient) {
|
||||
return static::$httpClient;
|
||||
if (self::$httpClient instanceof HttpClientInterface) {
|
||||
return self::$httpClient;
|
||||
}
|
||||
|
||||
$config = $this->getConfiguration();
|
||||
@@ -215,7 +216,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
$options['max_duration'] = $maxDuration;
|
||||
}
|
||||
|
||||
return static::$httpClient = HttpClient::createForBaseUri(rtrim($baseUrl, '/') . '/', $options);
|
||||
return self::$httpClient = HttpClient::createForBaseUri(rtrim($baseUrl, '/') . '/', $options);
|
||||
}
|
||||
|
||||
private function getConfiguration(): array
|
||||
@@ -228,14 +229,14 @@ class ApiClient implements LoggerAwareInterface
|
||||
|
||||
private function logError(string $message, array $context = []): void
|
||||
{
|
||||
if (null !== $this->logger) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->error($message, $context);
|
||||
}
|
||||
}
|
||||
|
||||
private function logWarning(string $message, array $context = []): void
|
||||
{
|
||||
if (null !== $this->logger) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->warning($message, $context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\EpTeam;
|
||||
|
||||
class ApiException extends \RuntimeException
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Http;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace EP\EpProducts\MyEP;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use EP\EpProducts\Domain\Model\Dto\NewsletterSubscriptionRequest;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use League\OAuth2\Client\Provider\AbstractProvider;
|
||||
@@ -349,8 +350,8 @@ class ApiClient implements LoggerAwareInterface
|
||||
|
||||
private function getHttpClient(): HttpClientInterface
|
||||
{
|
||||
if (null !== static::$httpClient) {
|
||||
return static::$httpClient;
|
||||
if (self::$httpClient instanceof HttpClientInterface) {
|
||||
return self::$httpClient;
|
||||
}
|
||||
|
||||
$config = $this->getConfiguration();
|
||||
@@ -373,7 +374,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
$options['max_duration'] = $maxDuration;
|
||||
}
|
||||
|
||||
return static::$httpClient = HttpClient::createForBaseUri($config['myEpApiBaseUrl'], $options);
|
||||
return self::$httpClient = HttpClient::createForBaseUri($config['myEpApiBaseUrl'], $options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -404,8 +405,8 @@ class ApiClient implements LoggerAwareInterface
|
||||
*/
|
||||
private function getAccessToken(array $config): AccessToken
|
||||
{
|
||||
if ($this->isTokenUsable(static::$accessToken)) {
|
||||
return static::$accessToken;
|
||||
if ($this->isTokenUsable(self::$accessToken)) {
|
||||
return self::$accessToken;
|
||||
}
|
||||
|
||||
// The static above only lives for one PHP request, so without this second level every
|
||||
@@ -414,15 +415,15 @@ class ApiClient implements LoggerAwareInterface
|
||||
if (is_array($cachedToken) && isset($cachedToken['access_token'])) {
|
||||
$token = new AccessToken($cachedToken);
|
||||
if ($this->isTokenUsable($token)) {
|
||||
static::$accessToken = $token;
|
||||
self::$accessToken = $token;
|
||||
|
||||
return static::$accessToken;
|
||||
return self::$accessToken;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
static::$accessToken = $this->normalizeToken($this->getProvider($config)->getAccessToken('client_credentials'));
|
||||
$this->cacheAccessToken(static::$accessToken);
|
||||
self::$accessToken = $this->normalizeToken($this->getProvider($config)->getAccessToken('client_credentials'));
|
||||
$this->cacheAccessToken(self::$accessToken);
|
||||
} catch (IdentityProviderException $e) {
|
||||
$message = sprintf('MyEP OAuth token request failed: %s', $e->getMessage());
|
||||
$this->logError($message, ['exception' => $e]);
|
||||
@@ -437,7 +438,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
throw new ApiException($message, 0, $e);
|
||||
}
|
||||
|
||||
return static::$accessToken;
|
||||
return self::$accessToken;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -448,7 +449,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
*/
|
||||
private function isTokenUsable(?AccessToken $token): bool
|
||||
{
|
||||
if (null === $token) {
|
||||
if (!$token instanceof AccessToken) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -477,7 +478,7 @@ class ApiClient implements LoggerAwareInterface
|
||||
|
||||
private function discardAccessToken(): void
|
||||
{
|
||||
static::$accessToken = null;
|
||||
self::$accessToken = null;
|
||||
$this->getCache()->remove(self::ACCESS_TOKEN_CACHE_IDENTIFIER);
|
||||
}
|
||||
|
||||
@@ -515,14 +516,14 @@ class ApiClient implements LoggerAwareInterface
|
||||
|
||||
private function logError(string $message, array $context = []): void
|
||||
{
|
||||
if (null !== $this->logger) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->error($message, $context);
|
||||
}
|
||||
}
|
||||
|
||||
private function logWarning(string $message, array $context = []): void
|
||||
{
|
||||
if (null !== $this->logger) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->warning($message, $context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\MyEP;
|
||||
|
||||
class ApiException extends \Exception
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Routing\Aspect;
|
||||
|
||||
use TYPO3\CMS\Core\Routing\Aspect\StaticMappableAspectInterface;
|
||||
@@ -22,4 +24,4 @@ class PassthroughMapper implements StaticMappableAspectInterface
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use EP\EpProducts\MyEP\ApiClient;
|
||||
use EP\EpProducts\MyEP\ApiException;
|
||||
use Psr\Log\LoggerAwareInterface;
|
||||
@@ -65,7 +66,7 @@ final class ApiImportSource implements ProductImportSource, SingletonInterface,
|
||||
|
||||
[$rows, $sourceGeneratedAt] = $export;
|
||||
$baseline = $this->getImportedTimestamp();
|
||||
if ($baseline !== null && $sourceGeneratedAt <= $baseline) {
|
||||
if ($baseline instanceof \DateTimeImmutable && $sourceGeneratedAt <= $baseline) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -81,7 +82,7 @@ final class ApiImportSource implements ProductImportSource, SingletonInterface,
|
||||
public function markImported(ProductImport $import): void
|
||||
{
|
||||
$sourceGeneratedAt = $import->getSourceGeneratedAt();
|
||||
if ($sourceGeneratedAt !== null) {
|
||||
if ($sourceGeneratedAt instanceof \DateTimeImmutable) {
|
||||
$file = $this->baselinePath();
|
||||
GeneralUtility::mkdir_deep(dirname($file));
|
||||
GeneralUtility::writeFile($file, $sourceGeneratedAt->format(\DateTimeInterface::ATOM), false);
|
||||
@@ -98,13 +99,13 @@ final class ApiImportSource implements ProductImportSource, SingletonInterface,
|
||||
public function isNewImportAvailable(): bool
|
||||
{
|
||||
$lastUpdateAt = $this->getApiClient()->getLastUpdateAt();
|
||||
if ($lastUpdateAt === null) {
|
||||
if (!$lastUpdateAt instanceof \DateTimeImmutable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$baseline = $this->getImportedTimestamp();
|
||||
|
||||
return $baseline === null || $lastUpdateAt > $baseline;
|
||||
return !$baseline instanceof \DateTimeImmutable || $lastUpdateAt > $baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,12 +142,12 @@ final class ApiImportSource implements ProductImportSource, SingletonInterface,
|
||||
|
||||
$pageGeneratedAt = $this->parseTimestamp($meta['sourceGeneratedAt'] ?? null);
|
||||
if ($page === 1) {
|
||||
if ($pageGeneratedAt === null) {
|
||||
if (!$pageGeneratedAt instanceof \DateTimeImmutable) {
|
||||
$this->logWarning('MyE&P product export has no source timestamp; skipping product import');
|
||||
return null;
|
||||
}
|
||||
$sourceGeneratedAt = $pageGeneratedAt;
|
||||
} elseif ($pageGeneratedAt === null || $pageGeneratedAt != $sourceGeneratedAt) {
|
||||
} elseif (!$pageGeneratedAt instanceof \DateTimeImmutable || $pageGeneratedAt != $sourceGeneratedAt) {
|
||||
$this->logWarning('MyE&P product export changed during the page walk; restarting', [
|
||||
'page' => $page,
|
||||
'expected' => $sourceGeneratedAt->format(\DateTimeInterface::ATOM),
|
||||
@@ -215,7 +216,7 @@ final class ApiImportSource implements ProductImportSource, SingletonInterface,
|
||||
|
||||
private function logWarning(string $message, array $context = []): void
|
||||
{
|
||||
if ($this->logger !== null) {
|
||||
if ($this->logger instanceof LoggerInterface) {
|
||||
$this->logger->warning($message, $context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
|
||||
|
||||
// Import daytrip dates only once per hotel as room information is taken
|
||||
// from contingents
|
||||
if ($product['daytrip'] && \in_array($key, static::$cache['datesAdded'], true)) {
|
||||
if ($product['daytrip'] && \in_array($key, self::$cache['datesAdded'], true)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -259,7 +259,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
|
||||
$dateCount++;
|
||||
}
|
||||
|
||||
static::$cache['datesAdded'][] = $key;
|
||||
self::$cache['datesAdded'][] = $key;
|
||||
}
|
||||
$this->db->update(
|
||||
'tx_epproducts_domain_model_product',
|
||||
@@ -344,7 +344,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
|
||||
$date['services_included'] = serialize($includedServices);
|
||||
$date['courses_included'] = serialize($includedCourses);
|
||||
|
||||
if ($includedBoard) {
|
||||
if ($includedBoard !== []) {
|
||||
$date['board'] = implode(', ', $includedBoard);
|
||||
$date['board_bus_pro_id'] = key($includedBoard);
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ class FilterService implements SingletonInterface
|
||||
$filterSettings['hotelUid'] = $settings['hotelUid'];
|
||||
}
|
||||
$conceptUids = GeneralUtility::intExplode(',', $settings['conceptUid'], true);
|
||||
if ($conceptUids) {
|
||||
if ($conceptUids !== []) {
|
||||
$filterSettings['conceptUids'] = $conceptUids;
|
||||
}
|
||||
if (isset($settings['dateFrom']) && (int) $settings['dateFrom'] > 0) {
|
||||
|
||||
@@ -107,7 +107,7 @@ class GroupsSwissService implements LoggerAwareInterface
|
||||
$current = null;
|
||||
$lastDate = null;
|
||||
foreach ($rows as $row) {
|
||||
$isGap = null !== $lastDate && $row['date'] > $lastDate->modify('+1 day');
|
||||
$isGap = $lastDate instanceof \DateTimeImmutable && $row['date'] > $lastDate->modify('+1 day');
|
||||
if (null !== $current && ($isGap || 'OK' === $row['status'] || $current['status'] !== $row['status'])) {
|
||||
$ranges[] = $current;
|
||||
$current = null;
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
class HotelImageService extends AbstractImageService
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface;
|
||||
@@ -30,8 +33,12 @@ class MyEpImageService extends AbstractImageService
|
||||
]
|
||||
];
|
||||
|
||||
public function __construct(FileRepository $fileRepository, ImageService $imageService, FrontendInterface $cache, string $table = 'tx_epproducts_domain_model_hotel')
|
||||
{
|
||||
public function __construct(
|
||||
FileRepository $fileRepository,
|
||||
ImageService $imageService,
|
||||
FrontendInterface $cache,
|
||||
string $table = 'tx_epproducts_domain_model_hotel',
|
||||
) {
|
||||
parent::__construct($fileRepository, $imageService, $cache);
|
||||
$this->table = $table;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
use EP\EpProducts\Domain\Model\Hotel;
|
||||
@@ -29,7 +31,7 @@ class PickupOverviewService
|
||||
public function getOverview(Product $product, ?Hotel $hotel): array
|
||||
{
|
||||
$overview = ['pickups' => []];
|
||||
if ($hotel === null || $product->isDaytrip()) {
|
||||
if (!$hotel instanceof Hotel || $product->isDaytrip()) {
|
||||
return $overview;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
class ProductImageService extends AbstractImageService
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Service;
|
||||
|
||||
use EP\EpProducts\MyEP\ApiException;
|
||||
|
||||
@@ -50,7 +50,7 @@ class SerializationUtility
|
||||
if (!\is_array($processingInstructions)) {
|
||||
$imageUrl = $image->getOriginalFile()->getPublicUrl();
|
||||
} else {
|
||||
$imageService = static::getImageService();
|
||||
$imageService = self::getImageService();
|
||||
$cropString = $image->getProperty('crop');
|
||||
$cropVariantCollection = CropVariantCollection::create($cropString);
|
||||
$cropVariant = $processingInstructions['cropVariant'] ?: 'default';
|
||||
@@ -70,11 +70,11 @@ class SerializationUtility
|
||||
*/
|
||||
private static function getImageService()
|
||||
{
|
||||
if (static::$imageService === null) {
|
||||
static::$imageService = GeneralUtility::makeInstance(ImageService::class);
|
||||
if (self::$imageService === null) {
|
||||
self::$imageService = GeneralUtility::makeInstance(ImageService::class);
|
||||
}
|
||||
|
||||
return static::$imageService;
|
||||
return self::$imageService;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpProducts\Utility;
|
||||
|
||||
class TypeConversionUtility
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Middleware\StaticSearchParamsMiddleware;
|
||||
use EP\EpProducts\Middleware\ApiMiddleware;
|
||||
use EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3')|| die('Access denied.');
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function () {
|
||||
|
||||
|
||||
+3
-1
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function () {
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_badge',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
use EP\EpProducts\Domain\Model\AbstractDestination;
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
use EP\EpProducts\Domain\Model\AbstractDestination;
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Service\LabelService;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_fact',
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_faq',
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Verpflegungsleistung',
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Service\LabelService;
|
||||
|
||||
return [
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Domain\Model\GroupsPriceOption;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
use EP\EpProducts\Service\LabelService;
|
||||
use EP\EpProducts\Domain\Model\Hotel;
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Hotelmapping',
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_infobox',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_matchcode',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Service\LabelService;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
use EP\EpProducts\Service\LabelService;
|
||||
use EP\EpProducts\UserFunc\TcaProcFunc;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
use EP\EpProducts\Domain\Model\AbstractDestination;
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_reseller',
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpProducts\Domain\Model\Hotel;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Reiseinfo Link',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_webcam',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
$EM_CONF[$_EXTKEY] = [
|
||||
'title' => 'E&P Products',
|
||||
'description' => 'Implementation of all product related logic and models',
|
||||
|
||||
@@ -27,7 +27,7 @@ use EP\EpProducts\Routing\Aspect\PassthroughMapper;
|
||||
use TYPO3\CMS\Core\Log\LogLevel;
|
||||
use EP\EpProducts\Log\Writer;
|
||||
|
||||
defined('TYPO3') or die('Access denied.');
|
||||
defined('TYPO3') || die('Access denied.');
|
||||
|
||||
$boot = function () {
|
||||
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['ep_products_cache'] ?? null)) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpTheme\Domain\Model;
|
||||
|
||||
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpTheme\Form;
|
||||
|
||||
use EP\EpProducts\MyEP\ApiClient;
|
||||
|
||||
@@ -47,7 +47,7 @@ final readonly class CdnImageMiddleware implements MiddlewareInterface
|
||||
$cdnBaseUrl = rtrim((string)($this->extensionConfiguration->get('ep_theme', 'cdnBaseUrl') ?? ''), '/');
|
||||
$contentType = $response->getHeaderLine('Content-Type');
|
||||
if ($cdnBaseUrl === ''
|
||||
|| !(str_starts_with($contentType, 'text/html') || str_starts_with($contentType, 'application/json'))
|
||||
|| !str_starts_with($contentType, 'text/html') && !str_starts_with($contentType, 'application/json')
|
||||
) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace EP\EpTheme\Middleware;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
@@ -48,18 +48,18 @@ class ContainerViewHelper extends AbstractViewHelper
|
||||
$content = $this->renderChildren();
|
||||
$content ??= $this->arguments['content'];
|
||||
$classes = [];
|
||||
if (\in_array($this->arguments['data']['colPos'] ?? null, static::$columnsWithoutContainers, false)) {
|
||||
if (\in_array($this->arguments['data']['colPos'] ?? null, self::$columnsWithoutContainers, false)) {
|
||||
$classes[] = 'container';
|
||||
}
|
||||
if ($this->arguments['cssClasses'] !== null) {
|
||||
$classes[] = $this->arguments['cssClasses'];
|
||||
}
|
||||
if (!empty($this->arguments['data']['space_before_class'])) {
|
||||
$scaleTop = static::$scale[$this->arguments['data']['space_before_class']];
|
||||
$scaleTop = self::$scale[$this->arguments['data']['space_before_class']];
|
||||
$classes[] = sprintf('pt-%d', $scaleTop);
|
||||
}
|
||||
if (!empty($this->arguments['data']['space_after_class'])) {
|
||||
$scaleBottom = static::$scale[$this->arguments['data']['space_after_class']];
|
||||
$scaleBottom = self::$scale[$this->arguments['data']['space_after_class']];
|
||||
$classes[] = sprintf('pb-%d', $scaleBottom);
|
||||
}
|
||||
if ('default' !== ($this->arguments['data']['frame_class'] ?? null)) {
|
||||
|
||||
@@ -22,7 +22,7 @@ class IconViewHelper extends AbstractTagBasedViewHelper
|
||||
|
||||
public function render(): string
|
||||
{
|
||||
$imageService = self::getImageService();
|
||||
$imageService = $this->getImageService();
|
||||
$sprite = $imageService->getImage('EXT:ep_theme/Resources/Public/images/icons_sprite.svg', null, false);
|
||||
$imageUrl = $sprite->getPublicUrl();
|
||||
|
||||
@@ -33,7 +33,7 @@ class IconViewHelper extends AbstractTagBasedViewHelper
|
||||
return $this->tag->render();
|
||||
}
|
||||
|
||||
private static function getImageService()
|
||||
private function getImageService()
|
||||
{
|
||||
return GeneralUtility::makeInstance(ImageService::class);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Directive;
|
||||
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Mutation;
|
||||
use TYPO3\CMS\Core\Security\ContentSecurityPolicy\MutationCollection;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider;
|
||||
use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider;
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use EP\EpTheme\Middleware\CdnImageMiddleware;
|
||||
use EP\EpTheme\Middleware\ReferrerMiddleware;
|
||||
use EP\EpTheme\Middleware\HtmxRedirectMiddleware;
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function() {
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function () {
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function () {
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
defined('TYPO3') || die();
|
||||
|
||||
call_user_func(function () {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
Loaded 100 of 114 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user